рдкрд░рд┐рдЪрдп
рдЖрдзреБрдирд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдПрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдг рдХрд╡рд░реЗрдЬ рдкрд░ рдЙрдЪреНрдЪ рдорд╛рдВрдЧреЛрдВ рдХреЛ рдмрдврд╝рд╛ рд░рд╣реА рд╣реИрдВред рдЖрдЬрдХрд▓, рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдирд╛ рдХреЗрд╡рд▓ рдЕрдЪреНрдЫреЗ рдлреЙрд░реНрдо рдХрд╛ рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдХреЛрдб рдХреЛ рдкреНрд░рд╕реНрддреБрдд рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рдЖрд╡рд╢реНрдпрдХрддрд╛рдУрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИред рддреЗрдЬреА рд╕реЗ, рд╣рдо рдЯреАрдбреАрдбреА (рдЯреЗрд╕реНрдЯ рдбреНрд░рд┐рд╡реЗрди рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ) рдФрд░ рдмреАрдбреАрдбреА (рдмрд┐рд╣реЗрд╡рд┐рдпрд░ рдбреНрд░рд┐рд╡реЗрди рдбреЗрд╡рд▓рдкрдореЗрдВрдЯ) рдЬреИрд╕реЗ рд╕рдВрдХреНрд╖рд┐рдкреНрддреАрдХрд░рдг рд╕реБрдирддреЗ рд╣реИрдВ, рдФрд░ рдХрдИ рдЗрди рд╡рд┐рдХрд╛рд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХрд╛ рд╕рдЦреНрддреА рд╕реЗ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред
рдмреАрдбреАрдбреА рдЯреАрдбреАрдбреА рдХреА рдХрд┐рд╕реНрдореЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ, рдФрд░ рдореИрдВ рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд▓рд┐рдЦрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдХреЗрд╡рд▓ рдмреАрдбреАрдбреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдЙрди рдЪреМрдЦрдЯреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬреЛ рдЙрджреНрдпреЛрдЧ рд╣рдореЗрдВ рдЖрдЬ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдФрд░ рдЕрдЧрд░ рдмрд┐рд▓реНрдХреБрд▓ рд╕рдЯреАрдХ рд╣реЛрдирд╛ рд╣реИ, рддреЛ рдЙрдирдореЗрдВ рд╕реЗ рддреАрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ:
рд╕реНрдкреЙрдХ ,
рдИрд╕реНрдм рдФрд░
рдХрдХрдбрд╝реА ред
TDD рдФрд░ BDD
рдореИрдВ рдпрд╣рд╛рдВ рдЖрдИрдЯреА рдЙрджреНрдпреЛрдЧ рдХреЗ рдкреНрд░рдХрд╛рд╢рдХреЛрдВ рдХреЗ рд▓реЗрдЦреЛрдВ рдФрд░ рдкреНрд░рд╕реНрддреБрддрд┐рдпреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдирд╣реАрдВ рдХрд░реВрдВрдЧрд╛ред рдореБрдЭреЗ рдЯреАрдбреАрдбреА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЯреНрд╡рд┐рдЯрд░ рдХрд╛ рдПрдХ рд╡рд╛рдХреНрдпрд╛рдВрд╢ рдпрд╛рдж рд╣реИ рдЬреЛ рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдЕрдЯрдХрд╛ рд╣реБрдЖ рд╣реИ, рдФрд░ рдЬреЛ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдФрд░ рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдЯреАрдбреАрдбреА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЗрд╕реЗ рд╢рдмреНрджрд╢рдГ рдирд╣реАрдВ рджреЗ рд╕рдХрддрд╛, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдЕрд░реНрде рдирд┐рдореНрди рд╣реИ: "рдпрджрд┐ рдЖрдк рдЯреАрдбреАрдбреА рдХрд╛ рдкрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк 100% рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреЛрдб рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдЧрд┐рд░ рдкрд░реАрдХреНрд╖рдг (рдУрдВ) рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд▓рд┐рдЦреА рдЧрдИ рдереА"ред рдореИрдВрдиреЗ рдЯреАрдбреАрдбреА рдФрд░ рдмреАрдбреАрдбреА рдХреЗ рдкреЗрд╢реЗрд╡рд░реЛрдВ рдФрд░ рд╡рд┐рдкрдХреНрд╖реЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдмрд╣рд╕ рджреЗрдЦреА рдФрд░ рд╕реБрдирд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХ) рдЖрдкрдХреЛ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЦ) рдпрджрд┐ рдХреЛрдб рдХреЛ рдЧрд┐рд░рд╛рдП рдЧрдП рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЖрдк рдЗрд╕ рдХреЛрдб рдкрд░ рднрд░реЛрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЦрд░рд╛рдм рдХрд░рдиреЗ рдХреЗ рдбрд░ рдХреЗ рдмрд┐рдирд╛ рдЗрд╕реЗ (рд░рд┐рдлреНрд▓реЗрдХреНрдЯрд░) рдЖрд╕рд╛рдиреА рд╕реЗ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред ред
рдЕрдм рдмреА.рдбреА.рдбреА. рдпрд╣ рдШрдЯрдирд╛ рдмрд╛рдж рдореЗрдВ рджрд┐рдЦрд╛рдИ рджреА рдФрд░ рддрдерд╛рдХрдерд┐рдд рдореЛрдХреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП
" рдореЛрдХреНрд╕
рдЖрд░ рд╕реНрдЯрдмреНрд╕" рд▓реЗрдЦ рдореЗрдВ рдлрд╛рдЙрд▓рд░ рдиреЗ рджрд╛рд╡рд╛ рдХрд┐рдпрд╛ред рджреВрд╕рд░реА рдУрд░, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рдПрдЧреЗрд▓ рдкрд╛рд░реНрдЯреА рдХреЗ рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдмрдврд╝рд╛рд╡рд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдбреЗрд╡рд▓рдкрд░реНрд╕, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдФрд░ рд╕рд┐рд╕реНрдЯрдо рд╡рд┐рд╢реНрд▓реЗрд╖рдХреЛрдВ рдХреЗ рдмреАрдЪ рдХреА рджреВрд░реА рдХреЛ рдХрдо рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдПрдХреНрдЬрд╝реАрдХреНрдпреВрдЯреЗрдмрд▓ рд╡реНрдпреВрдЕрд░реНрд╕ рдкреНрд░рд╛рдкреНрдд рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рд╡рд╛рд▓реА рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рдПрдХ рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред BDD рдЪреМрдЦрдЯреЗ рдпрд╣ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд░рддреЗ рд╣реИрдВред
рдЕрдм рдЪрд▓рд┐рдП рддреБрд▓рдирд╛ рдХрд░рддреЗ рд╣реИрдВред
рд╕рднреА рдЙрджрд╛рд╣рд░рдг рд╕рдорд╛рди рдкрд░рд┐рджреГрд╢реНрдп рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВред рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╡рд░реНрдгрди рдХреЛ рдЫреЛрдбрд╝ рджреВрдВрдЧрд╛, рдПрдХ рд╕рдорд╛рдзрд╛рди рдЬрд┐рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдХрд╡рд░ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рд╕реНрд╡рдпрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред
рд▓реЗрдЦ рдХреЗ рд▓реЗрдЦрдХ рдЙрдирдХреЗ рд▓рд┐рдП рд╕рд╣рд╛рдиреБрднреВрддрд┐ рдХреЗ рдмрдврд╝рддреЗ рдХреНрд░рдо рдореЗрдВ рдмреАрдбреАрдбреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рд╣рд╡рд╛рд▓рд╛ рджреЗрддреЗ рд╣реИрдВред
Easyb
рдпрд╣ рдврд╛рдВрдЪрд╛
рдЧреНрд░реВрд╡реА рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рд╕рднреА рдмреАрдбреАрдбреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рддрд░рд╣, рдпрд╣ рджрд┐рдП рдЧрдП-рдЬрдм-рддрдм рд╕рдВрдХреЗрддрди рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред рдЖрд╕рд╛рдиреА рд╕реЗ рдирд┐рд░рдВрддрд░ рдПрдХреАрдХрд░рдг (CI) рдореЗрдВ рдПрдХреАрдХреГрдд рд╣реЛрддрд╛ рд╣реИред
рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реИ:
description "This story is about sqrt optimisation algorithm"
narrative "this shows sqrt optimisation", {
as a "java developer"
i want "to know how sqrt optimisation works"
so that "that I can pass google interview"
}
before "init input and expected result",{
}
where "complete scenarios data",{
input = [[5, 10, -3, 17, 12, 1, -2, 13, -12], [5, 8, 13, 5, 21, 6, 3, 7, -2, 4, 8, 12]]
leftIndex = [2,3]
rightIndex = [5,10]
expectedSumm = [27,51]
}
scenario "find summ within two indexes #leftIndex and #rightIndex of the array #input",{
given "An Sqrt algorithm implementation",{
alg = new SqrtDecompositionSum(input.toArray(new int[0]))
}
when "calc sum between two indexes", {
actualSum = alg.calcSummBetween(leftIndex, rightIndex)
}
then "summ should be equal expected #expectedSumm", {
actualSum.shouldBe expectedSumm
}
}
рдпрд╣рд╛рдВ рдкрд░реАрдХреНрд╖рд╛ рдкрд░рд┐рдгрд╛рдо рдХреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИ:

рдпрд╣рд╛рдВ рдИрдЬреАрдм рдХреА рдкрд╣рд▓реА рдХрдордЬреЛрд░реА "рдЪрдврд╝рддреА рд╣реИ" рд╣реИред рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ 2 рдкрд░рд┐рджреГрд╢реНрдп рдХрд╣рд╛рдВ рд╕реЗ рдЖрдП, рдЬрдмрдХрд┐ рдпрд╣ рд╡рд░реНрдгрд┐рдд рд╣реИ 1. рдпрджрд┐ рдЖрдк рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдХрд┐рд╕ рднрд╛рдЧ рдХреЛ рдХрд░реАрдм рд╕реЗ рджреЗрдЦрддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрдирдкреБрдЯ рдФрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рдорд╛рдиреЛрдВ рдХреЗ 2 рд╕реЗрдЯ рддреИрдпрд╛рд░ рдХрд┐рдП рдЬрд╛ рд░рд╣реЗ рд╣реИрдВред рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЬрд╣рд╛рдВ рдкреНрд░реЛрдЬреЗрдХреНрдЯ
рд╕рд╛рдЗрдЯ рдкрд░ рднреА рдирд┐рд░реНрдорд╛рдг рдХрд╛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдирд╣реАрдВ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдореБрдЭреЗ рд╡рд╣рд╛рдВ рдирд╣реАрдВ рдорд┐рд▓рд╛ред
рдиреАрдЪреЗ рдПрдХ рдЧрд┐рд░реА рд╣реБрдИ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдкрд┐ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рдХрд╛рдлреА рдкрдардиреАрдп рд╣реИред рд▓рд╛рдЗрди рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ
actualSum.shouldBe expectedSumm
ред рдпрд╣ рдЪреАрдиреА рд╣реИ, рдЬреЛ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд╕рд╛рде рдЕрдкреЗрдХреНрд╖рд┐рдд рдХреА рдЬрд╛рдВрдЪ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
IDE рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЪрд▓рд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдИрдЬреАрдмреА рдкреНрд▓рдЧрдЗрди рдЗрдВрд╕реНрдЯреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рджреВрд╕рд░реА рдХрдореА рдЬреЛ рдореИрдВ рдиреЛрдЯ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рдкрд┐рдЫрд▓реА рдмрд╛рд░ 2010 рдореЗрдВ рдИрдЬреАрдмреА рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдЬреЛ рдХрд┐ рдореЗрд░реА рд░рд╛рдп рдореЗрдВ рдХрд╛рдлреА рд╕рдордп рд╕реЗ рд╣реИред
рд╡рд┐рд╡рд░рдг рдХреЗ рд▓рд┐рдП
, рдкрд░рд┐рдпреЛрдЬрдирд╛
рд╡реЗрдмрд╕рд╛рдЗрдЯ рджреЗрдЦреЗрдВред
рд╕реНрдкреЙрдХ
рд╕реНрдкреЙрдХ , рдЬреИрд╕реЗ рдИрдЬрд╝реАрдмреА рдЧреНрд░реВрд╡реА рд╕реЗ рдЖрддрд╛ рд╣реИред Groovy / Grails Developers рдЗрд╕реЗ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧреА:
class SqrtSumAlgSpecTest extends Specification {
Algorithm alg
def "Sqrt sums scenarios"(){
when:
alg = new SqrtDecompositionSum(input.toArray(new int[0]))
then:
outputSumm == alg.calcSummBetween(leftIndex, rightIndex)
where:
input | leftIndex | rightIndex | outputSumm
[5, 10, -3, 17, 12, 1, -2, 13, -12] |2 |5 |27
[5, 8, 13, 5, 21, 6, 3, 7, -2, 4, 8, 12] |3 |10 |52
}
}
рдореИрдВ рд╕реНрдкреЙрдХ рдХреЛ рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ рдЬрд╣рд╛рдВ рдХреНрд▓реЙрдЬ рд╣реИред рд╕реНрдкреЙрдХ рд╕реНрдкреЗрд╕рд┐рдлрд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
spock.lang.Specification
рд╕реЗ рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓реА рдЧреНрд░реВрд╡реА рдХреНрд▓рд╛рд╕ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдПрдХ рдЧрд┐рд░рд╛ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓реЗ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:

рд╕реНрдкреЛрдХ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдпрд╛ рдХреНрдпреВрдП рдЗрдВрдЬреАрдирд┐рдпрд░ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдбреЗрд╡рд▓рдкрд░ рдХреЗ рдХрд░реАрдм рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рднреА рдкрдврд╝рдирд╛ рдЖрд╕рд╛рди рд╣реИред
рдХрдХрдбрд╝реА
рдореИрдВ рд╣рд╛рд▓ рд╣реА рдореЗрдВ
рдХрдХрдбрд╝реА рд╕реЗ рдорд┐рд▓рд╛, рдФрд░ рдЬрд┐рддрдирд╛ рдореИрдВрдиреЗ рдЗрд╕рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд┐рдпрд╛, рдЙрддрдирд╛ рд╣реА рдореБрдЭреЗ рдпрд╣ рдкрд╕рдВрдж рдЖрдпрд╛ред рдкрд╣рд▓реЗ рджреЛ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдХрдХрдбрд╝реА рд░реВрдмреА рд╕реЗ рдЖрддреА рд╣реИред рдЬрд╛рд╡рд╛ рдФрд░ C # рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИред
рдХрдХрдбрд╝реА рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рджреЛ рдлрд╛рдЗрд▓реЗрдВ рд╣реЛрддреА рд╣реИрдВ: рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╣реА, рдФрд░ рдЬрд╛рд╡рд╛, рд╕реА #, рд░реВрдмреА рдореЗрдВ рдЗрд╕рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрдиред рдпрд╣ рд╣рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрдВрдЧреНрд░реЗрдЬреА рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рд╕рд╛рдорд╛рдиреНрдп рдХрд╣рд╛рдиреА рдмрдирд╛рддрд╛ рд╣реИ, рд╣рдо рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрддреЗ рд╣реИрдВ
Feature: Sqrt Sums Algorithm Feature
In order to ensure that my algorithm works
As a Developer
I want to run a quick Cuke4Duke test
Scenario Outline: Sqrt Sums Alg Scenario
Given The input array <input array>
When The calc sum between <Left index>, <Right index>
Then The summ is <output summ>.
Examples:
|input array |Left index |Right index|output summ|
|5, 10, -3, 17, 12, 1, -2, 13, -12 |2 |5 |27 |
|5, 8, 13, 5, 21, 6, 3, 7, -2, 4, 8, 12 |3 |10 |52
рд╡реИрд╕реЗ, рдХрдХрдбрд╝реА рдореЗрдВ рд▓рд┐рдкрд┐рдпреЛрдВ рдХреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред
рдФрд░ рдпрд╣рд╛рдБ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ
public class SqrtsumsalgFeature {
private Algorithm alg;
private int result;
@Given ("^The input array ([\\d\\s\\-\\,]*)$")
public void theInputArray(String input) {
String[] split = input.split(",");
int[] arrayInput = new int[split.length];
for (int i = 0; i < arrayInput.length; i++) {
arrayInput[i] = Integer.valueOf(split[i].trim());
}
alg = new SqrtDecompositionSum(arrayInput);
}
@When ("^The calc sum between ([\\d]*), ([\\d]*)$")
public void theCalcSumBetween(int L, int R) {
result = alg.calcSummBetween(L, R);
}
@Then ("^The summ is ([\\d]*).$")
public void theSummIs(int expectedResult) {
Assert.assertThat(result, is(expectedResult));
}
}
рдпрд╣рд╛рдВ рдЖрдкрдХреЛ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рдирд╛рдо, рдФрд░ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рддрд░реАрдХреЛрдВ рдФрд░ рдЪрд░рдгреЛрдВ рдХреЗ рдирд╛рдо рджреЛрдиреЛрдВ рдореЗрдВ рдирд╛рдордХрд░рдг рдкрд░рдВрдкрд░рд╛рдУрдВ рдХрд╛ рдкрд╛рд▓рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рдЙрдиреНрд╣реЗрдВ рдореЗрд▓ рдЦрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдореИрдЪрд┐рдВрдЧ, рдЧреЗрди,
рдлрд┐рд░ рдПрдиреЛрдЯреЗрд╢рди рдФрд░ рдПрдиреЛрдЯреЗрд╢рди рдХреЗ рддрд░реНрдХреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд░реЗрдЧреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕рдореВрд╣реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЗ рддрд░реНрдХреЛрдВ рдХреЛ рдЙрдЬрд╛рдЧрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдиреАрдЪреЗ рдПрдХ рдкрд╛рд░рд┐рдд рдХрдХрдбрд╝реА рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ

рдпрд╣рд╛рдБ рдПрдХ рдЧрд┐рд░реА рд╣реБрдИ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ

рдореБрдЭреЗ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЛ рдЕрд▓рдЧ рдХрд░рдирд╛ рдкрд╕рдВрдж рд╣реИред рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреЗ рд╕рд╛рде рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рднреНрд░рдорд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рдпрдорд┐рдд рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдХреЛ рднреНрд░рдорд┐рдд рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓реЗрдЦрдХ рд╕реЗ рдЫрд┐рдкреЗ рд╣реБрдП рд╣реИрдВ, рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдЙрдирд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЗрд╕реЗ рджреЛрд╖реЛрдВ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ рдХрд╣реВрдВрдЧрд╛ред Cuke4duke рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирдХрд╛рд░реА рдХреЗ рд▓рд┐рдП - рдЬрд╛рд╡рд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди, рдХреГрдкрдпрд╛
рдпрд╣рд╛рдБ рдЬрд╛рдПрдБ ред
рдкрд░рд┐рдгрд╛рдо
рд▓реЗрдЦ рдФрд╕рдд рд╕реЗ рдКрдкрд░ рдерд╛ред рдореИрдВ рдорд╛рд╡реЗрди рдФрд░ рдХрдВрдЯреАрдиреНрдпреВрдЕрд╕ рдЗрдВрдЯреАрдЧреНрд░реЗрд╢рди рдХреЗ рд╕рд╛рде рдПрдХреАрдХрд░рдг рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рднрд╡рд┐рд╖реНрдп рдХреА рдкреЛрд╕реНрдЯ рдХрд╛ рд╡рд┐рд╖рдп рд╣реЛрдЧрд╛ред
рдирд┐рд╖реНрдкрд╛рджрди рдпреЛрдЧреНрдп рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦреЗрдВ, рдпрд╣ рди рдХреЗрд╡рд▓ рдЙрдкрдпреЛрдЧреА рд╣реИ, рдмрд▓реНрдХрд┐ рд╕реБрдЦрдж рднреА рд╣реИред