
рдореИрдВ рддреБрд░рдВрдд рдЗрд╕ рддрдереНрдп рдкрд░ рдЬреЛрд░ рджреЗрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рджреБрдирд┐рдпрд╛ рдФрд░ рд╕реНрд╡реАрдХреГрддрд┐ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рджреБрдирд┐рдпрд╛ рдмрд╣реБрдд рдЕрд▓рдЧ рд╣реИрдВ: рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдХрд╛рдиреВрдиреЛрдВ, рд╡рд┐рднрд┐рдиреНрди рдХреНрд╖рдорддрд╛рдУрдВ рдФрд░ рд╕реАрдорд╛рдУрдВ рдХреЗ рд╕рд╛рдеред рдФрд░ рдЕрдЧрд░ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рджреБрдирд┐рдпрд╛ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рднрд╛рдЧ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдФрд░ рдЕрд▓рдЧ-рдерд▓рдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддреА рд╣реИ, рддреЛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реАрдХреНрд╖рдг рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╕рд╛рде рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдХрд╛рдо рдХрд╛ рдПрдХ рдЕрдиреБрдХрд░рдг рд╣реИ, рдЕрдзрд┐рдХрд╛рдВрд╢ рднрд╛рдЧ рдХреЗ рд▓рд┐рдП рдмрдЯрди рдФрд░ рдЯрд╛рдЗрдкрд┐рдВрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЬреЛ рдЕрдВрддрддрдГ рдмрдбрд╝реЗ рдкрд░рд┐рджреГрд╢реНрдп рдкрд░рд┐рджреГрд╢реНрдпреЛрдВ рдореЗрдВ рд╡рд┐рд▓рдп рд╣реЛрддрд╛ рд╣реИред ред
рдЕрдХреНрд╕рд░ рдРрд╕рд╛ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рднрд▓реЗ рд╣реА рдЯреВрд▓ рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рднреА рдпреЗ рд╕реБрд╡рд┐рдзрд╛рдПрдБ UI рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд░реВрдк рд╕реЗ рдЕрдиреБрдкрдпреБрдХреНрдд рд╣реИрдВред
рдпрд╣ рдореЗрд░реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ рд╣реБрдЖ рдЬрдм рдореИрдВрдиреЗ рдПрдордПрд╕-рдЯреЗрд╕реНрдЯ рдврд╛рдВрдЪреЗ рдореЗрдВ рдбреЗрдЯрд╛-рд╕рдВрдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рд╕рдорд╕реНрдпрд╛ рдФрд░ рдореЗрд░реЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд░реНрдгрди рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдореБрдЭреЗ рдЕрднреА рднреА рд╕рдордЭ рдореЗрдВ рдирд╣реАрдВ рдЖрдпрд╛ рд╣реИ - рдореБрдЭреЗ рдЧрд░реНрд╡ рдпрд╛ рд╢рд░реНрдо рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдбреЗрдЯрд╛-рд╕рдВрдЪрд╛рд▓рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг
рдорд╛рди рд▓реАрдЬрд┐рдпреЗ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ int ConvertToNumber (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрдирдкреБрдЯ) рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдЗрдирдкреБрдЯ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░рд┐рдВрдЧ рд▓реЗрддреА рд╣реИ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рдкреВрд░реНрдгрд╛рдВрдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдПрдХ рд╣реА рдирдВрдмрд░ рд▓реМрдЯрд╛рддреА рд╣реИред
рдЖрдЗрдП рд╣рдо рдПрдХ рд╕рдХрд╛рд░рд╛рддреНрдордХ рдкрд░реАрдХреНрд╖рдг рд▓рд┐рдЦрддреЗ рд╣реИрдВ (
рдЬреЛ рдЖрдирдВрдж рд▓рд╛рддрд╛ рд╣реИ ), рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрдирдкреБрдЯ = "3" рдФрд░ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдкрд░рд┐рдгрд╛рдо рднреА 3 рд╣реЛрдЧрд╛ред
рдФрд░ рдХреНрдпрд╛? рдмреЗрд╢рдХ, рд╕реАрдорд╛ рдореВрд▓реНрдп рдФрд░ рддреБрд▓реНрдпрддрд╛ рд╡рд░реНрдЧ: "-1", "0", "рдореИрдХреНрд╕рд┐рдВрдЯ", "- (рдореИрдХреНрд╕рд┐рдиреЗрдВрдЯ")ред
рдареАрдХ рд╣реИ, рдЕрдЧрд░ рджрд╢рдорд▓рд╡ рдЕрдВрд╢ рдЗрдирдкреБрдЯ рд╕реЗ рдЯрдХрд░рд╛рддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдФрд░ рдЕрдЧрд░ рд░реЗрдЦрд╛ рд╡рд░реНрдгреЛрдВ рдХреЗ рдмрд╛рдж рдПрдХ рд╕рдВрдЦреНрдпрд╛ рд╕реЗ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ?
рдРрд╕реА рд╡рд┐рднрд┐рдиреНрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдореЗрдВ рд╕рд╣реА рдирд┐рд░реНрдгрдп рдХреНрдпрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП?
рд▓реЗрдХрд┐рди рдХреЛрдИ рд╕рд╣реА рдирд┐рд░реНрдгрдп рдирд╣реАрдВ рд╣реИред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рднрд╛рд╖рд╛рдПрдВ рдЗрди рд╕реНрдерд┐рддрд┐рдпреЛрдВ рдХреЛ рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рд╕рдВрднрд╛рд▓рддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдСрдкрд░реЗрд╢рди {тАЭ10тАЭ + 1} рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд╕реНрдЯреНрд░рд┐рдВрдЧ тАЬ101тАЭ рд▓реМрдЯрд╛рдПрдЧрд╛, рдФрд░ {тАЬ10тАЭ - 1} рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдПрдХ рдирдВрдмрд░ рд╣реЛрдЧрд╛ 9. рдФрд░ рдкрд░реНрд▓ рдХрд╣реЗрдВрдЧреЗ: рдХреНрд░рдорд╢рдГ 11 рдФрд░ 9ред рд▓реЗрдХрд┐рди рдПрдХ "рд╕рдЪреНрдЪреЗ" рдЙрддреНрддрд░ рдХреА рдХрдореА рд╣рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рд╕рд╣реА рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХрддреА рдирд╣реАрдВ рд╣реИ рдФрд░ рдХрд╣рддреА рд╣реИ рдХрд┐ рдЕрдм рд╕реЗ рдпрд╣ рд╕рдЪреНрдЪрд╛рдИ рд╣реИ, рдФрд░ рдкрддреНрдерд░ рдореЗрдВ рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд╕рд╛рде рдЗрд╕ рд╕рдЪреНрдЪрд╛рдИ рдХреЛ рддрд░рд╛рд╢рдирд╛ рд╣реИред
рд▓реЗрдХрд┐рди, рдХреНрдпрд╛ рдЖрдк рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдПрдХ рдПрдХрд▓ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд╕рд╛рде рдПрдХ рджреБрд░реНрднрд╛рдЧреНрдпрдкреВрд░реНрдг рд╡рд┐рдзрд┐ рдХреЗ рд▓рд┐рдП рдПрдХ рджрд░реНрдЬрди рдпреВрдирд┐рдЯ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдмрдЪрд╛рдиреЗ рдФрд░ рдкреЗрд╕реНрдЯ рдХрд░рдиреЗ рдЬрд╛ рд░рд╣реЗ рд╣реИрдВ?
рдФрд░ рдЗрдирдкреБрдЯ рдФрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рдорд╛рдиреЛрдВ рдХреА рддрд╛рд▓рд┐рдХрд╛ рдХреНрдпреЛрдВ рдирд╣реАрдВ рдмрдирд╛рдИ рдЧрдИ рд╣реИ, рдФрд░ рдПрдХ рдПрдХрд▓ рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдРрд╕реА рддрд╛рд▓рд┐рдХрд╛ рдХреА рдкреНрд░рддреНрдпреЗрдХ рдкрдВрдХреНрддрд┐ рдХреЛ рдкрд╛рд╕ рдХрд░реЗрдВред
рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдореИрдВ рдЦреБрдж рдмрд╣реБрдд рд╣реИрд░рд╛рди рдерд╛ рдХрд┐ рдорд┐рд╕-рдЯреЗрд╕реНрдЯ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рд╕рдореГрджреНрдз рдЕрд╡рд╕рд░ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред
рдорд┐рд╕-рдЯреЗрд╕реНрдЯ рдкрд░ рдбреЗрдЯрд╛-рд╕рдВрдЪрд╛рд▓рд┐рдд рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг
рдЙрджрд╛рд╣рд░рдгрд╛рд░реНрде рдЙрджреНрджреЗрд╢реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП, ConvertToNumber рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ, рдореИрдВ Convert.ToInt32 () рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░реВрдБрдЧрд╛-рдпрд╣ рдмрд╣реБрдд рд╕рд░рд▓ рд╣реЛрдЧрд╛ред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреА рдкреЗрд╢рдХрд╢ рдХрд░реВрдВрдЧрд╛:
static int ConvertToNumber(string input) { int result = 0; while (input.Length > 0) result = (input[0] >= '0' || input[0] <= '9') ? (result * 10) + input[0] - '0' + (((input = input.Remove(0, 1)).Length > 0) ? 0 : 0) : 0; return result; }
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рд╕реБрд╢реНрд░реА-рдЯреЗрд╕реНрдЯ рдореЗрдВ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХреЛрдб рдореЗрдВ рд╕реАрдзреЗ рдЖрдиреЗ рд╡рд╛рд▓реЗ рдФрд░ рдЕрдкреЗрдХреНрд╖рд┐рдд рдореВрд▓реНрдпреЛрдВ рдХреЛ рд╕реЗрдЯ рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рд╡рд┐рдХрд▓реНрдк рд╣реИ - рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ред рдФрд░ рдРрд╕реЗ рд╕реНрд░реЛрдд рдХреЗ рд░реВрдк рдореЗрдВ, рдЖрдкрдХреЛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдирд╣реАрдВ рд╣реЛрдЧрд╛ рдХрд┐ рд╣рдо рдПрдХреНрд╕реЗрд▓ рдлрд╛рдЗрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред
рдпрджреНрдпрдкрд┐, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдк рдХрд┐рд╕реА рднреА рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд┐рд╕реЗ .NET рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдЬрд┐рд╕рдореЗрдВ CSV, XML рдФрд░ рдЕрдиреНрдп рд╢рд╛рдорд┐рд▓ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдПрдХреНрд╕реЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдмрд╣реБрдд рдмрдврд╝рд┐рдпрд╛ рд╣реИ! рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реА рддрд╛рд▓рд┐рдХрд╛ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:

рдореБрдЦреНрдп рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рд╡рд╛рдВрдЫрд┐рдд рдЯреБрдХрдбрд╝реЗ рдХрд╛ рдЪрдпрди рдХрд░рдирд╛ рди рднреВрд▓реЗрдВ рдФрд░ рдЗрд╕реЗ "рд╢реАрд░реНрд╖рдХ рд╡рд╛рд▓реА рддрд╛рд▓рд┐рдХрд╛" рдХреЗ рд░реВрдк рдореЗрдВ рдкреНрд░рд╛рд░реВрдкрд┐рдд рдХрд░реЗрдВред рдЕрдиреНрдпрдерд╛, рдЬрд╛рджреВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдлрд┐рд░ рдПрдХреНрд╕реЗрд▓ рдЯреЗрдмрд▓ рдкрд░ рдХрдиреЗрдХреНрд╢рди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╕рд╛рде рдЗрдХрд╛рдИ рдкрд░реАрдХреНрд╖рдг рдФрд░ рдбреЗрдЯрд╛ рдкрдврд╝рдиреЗ рдкрд░ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛:
const string dataDriver = "System.Data.OleDb"; const string connectionStr = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=C:\\matrix.xlsx;Extended Properties=\"Excel 12.0 Xml;HDR=YES\";"; [TestMethod] [DataSource(dataDriver, connectionStr, "Shit1$", DataAccessMethod.Sequential)] public void TestMe() { string rowInput = TestContext.DataRow["Input"].ToString(); string rowExpected = TestContext.DataRow["Expected Result"].ToString(); string rowException = TestContext.DataRow["Exception"].ToString(); string rowComment = TestContext.DataRow["Comment"].ToString(); int actualResult = ConvertToNumber(rowInput); Assert.AreEqual(rowExpected, actualResult.ToString()); }
рд╣рд╛рдВ, рдореБрдЭреЗ рдХрдиреЗрдХреНрд╢рди рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдиреЗ рдФрд░ рдЗрдирдкреБрдЯ рдбреЗрдЯрд╛ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдкрд░ рдереЛрдбрд╝рд╛ рд╕рд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░рдирд╛ рдерд╛, рд▓реЗрдХрд┐рди рд╣рдореЗрдВ рдЬреЛ рджреГрд╢реНрдп рдкрд░рд┐рдгрд╛рдо рдорд┐рд▓реЗ, рдЙрди рдкрд░ рдЧреМрд░ рдХрд░реЗрдВред

рдФрд░ рдПрдХ рдирдИ рдкрд░реАрдХреНрд╖рд╛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП - рдмрд╕ рдПрдХреНрд╕реЗрд▓ рдореЗрдВ рдПрдХ рдирдИ рдкрдВрдХреНрддрд┐ рдЬреЛрдбрд╝реЗрдВред рдФрд░ рдЖрдкрдХреЛ рдпрд╣ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдореЗрдВ рдЪрдврд╝рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рдирд╣реАрдВ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдкрд░реАрдХреНрд╖рдг рджреНрд╡рд╛рд░рд╛ рдХрд╡рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдХреНрдпрд╛ рдирд╣реАрдВ рд╣реИред
рдЗрд╕рдХреЗ рдЕрддрд┐рд░рд┐рдХреНрдд, рдЖрдк рддреНрд░реБрдЯрд┐ рдпрд╛ рд▓реЙрдЧ рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЛ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рднреА рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдореЗрд░реЗ рдХрдо-рдкреНрд░рджрд░реНрд╢рди рдорд╢реАрди рдкрд░ рднреА, рд╕рднреА 14 рдкрд░реАрдХреНрд╖рдг 1 рд╕реЗрдХрдВрдб рд╕реЗ рдХрдо рд╕рдордп рдореЗрдВ рдкрд╛рд░рд┐рдд рд╣реЛ рдЧрдПред
рдореИрдВ рдЖрдкрдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рдРрд╕реЗ рдЕрд╡рд╕рд░реЛрдВ рдФрд░ рджреГрд╢реНрдп рдкрд░рд┐рдгрд╛рдореЛрдВ рд╕реЗ рдкреНрд░рднрд╛рд╡рд┐рдд рдерд╛ред
рдиреЛрдЯ: рд╕рдм рдХреБрдЫ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, C: \ рдбреНрд░рд╛рдЗрд╡ рдХреЗ рдореВрд▓ рдореЗрдВ рдореИрдЯреНрд░рд┐рдХреНрд╕ред Xlsx рдлрд╝рд╛рдЗрд▓ рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рдирд╛ рди рднреВрд▓реЗрдВ
рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкрд░реАрдХреНрд╖рдг рдХреА рджреБрдирд┐рдпрд╛ рдореЗрдВ рдбреЗрдЯрд╛-рд╕рдВрдЪрд╛рд▓рд┐рдд рджреГрд╖реНрдЯрд┐рдХреЛрдг
рдЕрдкрдиреЗ рдорд╣рд╛рди рдЕрдлрд╕реЛрд╕ рдХреЗ рдмрд╛рдж, рдореИрдВрдиреЗ рд╕реЗрд▓реЗрдирд┐рдпрдо рд╡реЗрдмрдбреНрд░рд╛рдЗрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ - рдореЗрдЧрд╛-рдХреВрд▓ рдлреАрдЪрд░ рдПрдордПрд╕-рдЯреЗрд╕реНрдЯ рдХреЗ рд▓рд┐рдП рдореЗрд░реА рдкреНрд░рд╢рдВрд╕рд╛ рд╕рдорд╛рдкреНрдд рд╣реЛ рдЧрдИред
рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдг, рдЙрдирдХреЗ рд╕реНрд╡рднрд╛рд╡ рд╕реЗ, рдореЙрдбреНрдпреВрд▓рд░ рд▓реЛрдЧреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдмрд╣реБрдд рдзреАрдореА рдЧрддрд┐ рд╕реЗ рд╣реЛрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ рдЖрдк рд╕рд┐рд╕реНрдЯрдо рдХреЗ рдореВрд▓ рд╕реЗ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдВрджрд░реНрдн рдФрд░ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рд╛рде рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдирд╣реАрдВ ... рдПрдХ рдЬрдЯрд┐рд▓ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкрд░рд┐рджреГрд╢реНрдп рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП - рдЖрдкрдХреЛ рдмрд╣реБрдд рд╕рд╛рд░реЗ рдмрдЯрди рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рдЗрд╕рд▓рд┐рдП, рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдЕрдиреБрдХреВрд▓рди рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП, рдПрдХ рдпреВрдЖрдИ рдкрд░реАрдХреНрд╖рдг 30 рд╕реЗрдХрдВрдб рд╕реЗ рджрд╕рд┐рдпреЛрдВ рдорд┐рдирдЯ рддрдХ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рд╕рдм рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред
рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрджрд┐ рд╣рдо рдорд╛рдирддреЗ рд╣реИрдВ рдХрд┐ 14 рдбреЗрдЯрд╛-рд╕рдВрдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ рд╕реЗ 1 рдореЗрдВ рдПрдХ рдорд┐рдирдЯ рд▓рдЧрддрд╛ рд╣реИ, рддреЛ рдкреВрд░рд╛ рд╕реЗрдЯ 14 рдорд┐рдирдЯ рдореЗрдВ рдкрд╛рд╕ рд╣реЛрдЧрд╛ред
рдЕрдм рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдЧрд┐рд░ рдЬрд╛рдПрдЧрд╛, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХреНрдпреЛрдВрдХрд┐ рдкреГрд╖реНрда рдкрд░ рдмрдЯрди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рд╣реЛрдиреЗ рдХрд╛ рд╕рдордп рдирд╣реАрдВ рдерд╛ ...
рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛, рдЖрдк рдХрд╣рддреЗ рд╣реИрдВ, рдЖрдк рдХреЗрд╡рд▓ рдЧрд┐рд░реЗ рд╣реБрдП рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдареАрдХ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред
рдирд╣реАрдВред Ms-Test рдбреЗрдЯрд╛-рдЪрд╛рд▓рд┐рдд рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рдПрдХ рдкреИрдХреЗрдЯ рдХреЛ рдПрдХ рдкрд░реАрдХреНрд╖рдг рдорд╛рдирддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, 1 рдкрд░реАрдХреНрд╖рд╛ рд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓рдиреЗ рдХреЗ рд▓рд┐рдП - рдЖрдкрдХреЛ рд╕рднреА 14 рдХреЛ рдлрд┐рд░ рд╕реЗ рдЪрд▓рд╛рдирд╛ рд╣реЛрдЧрд╛ред рдФрд░ рдпрд╣ рдПрдХ рддрдереНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЬреЛ рдкрд░реАрдХреНрд╖рдг рдкрд╣рд▓реЗ рдкрд╛рд░рд┐рдд рд╣реЛ рдЧрдП рд╡реЗ рдЕрдЪрд╛рдирдХ рдирд╣реАрдВ рдЧрд┐рд░реЗрдВрдЧреЗред рдФрд░ рдбрд┐рдмрдЧрд┐рдВрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдЖрдкрдХреЛ рди рдХреЗрд╡рд▓ рдПрдХ рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдмрд▓реНрдХрд┐ рдПрдХ рд╕рд╢рд░реНрдд рдмреНрд░реЗрдХрдкреЙрдЗрдВрдЯ рд╕реЗрдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛: рд╡рд┐рдЬрд╝реБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЗрд╕реЗ рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ ... рд▓реЗрдХрд┐рди рдЗрд╕рдХреЗ рд▓рд┐рдП рдЕрддрд┐рд░рд┐рдХреНрдд рдкреНрд░рдпрд╛рд╕ рдФрд░ рд╕рдордп рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред
рдпрд╣ рдПрдХ рдРрд╕рд╛ рд░рд╛рд╕реНрддрд╛ рдЦреЛрдЬрдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдерд╛ рдЬреЛ рдХреЗрд╡рд▓ рдЧрд┐рд░реЗ рд╣реБрдП рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдЖрдЧреЗ рдирд┐рдХрд▓рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдЧрд╛ред рдФрд░ рдореБрдЭреЗ рдРрд╕рд╛ рд░рд╛рд╕реНрддрд╛ рдорд┐рд▓рд╛ред
рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди: "рд╡рдВрд╢рд╛рдиреБрдХреНрд░рдо рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЪрдХреНрд░"
рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ 2 рдлрд╛рдЗрд▓реЗрдВ рдЬреЛрдбрд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
TestBase.cs рдФрд░
TestRows.cs ред
рдЙрд╕рдХреЗ рдмрд╛рдж рдирд╛рдорд╕реНрдерд╛рди "MsTestRows.Rowsред *" рдореЗрдВ, рдХрдХреНрд╖рд╛ TestRows_
01 ... TestRows_
100 рджрд┐рдЦрд╛рдИ рджреЗрдВрдЧреЗ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рд╕реЗ рдПрдХ рд╕реМ рдЙрддреНрдкрдиреНрди рд╡рд┐рдзрд┐рдпрд╛рдБ рд╣реЛрдВрдЧреАред
рдЖрд╡рд╢реНрдпрдХ рддрд░реАрдХреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ (NN) рдХреЗ рд╕рд╛рде TestRows_NN рд╕реЗ рдЕрдкрдиреЗ TestClass рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░реЗрдВред
рдЕрдЧрд▓рд╛, рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ рдЖрдкрдХреЛ рджреЛ рддрд░реАрдХреЛрдВ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдЧрд╛:
- GetNextDataRow () - рдЬреЛ рдЕрдЧрд▓реЗ рдкрд░реАрдХреНрд╖рдг рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛ рд▓реМрдЯрд╛рдПрдЧрд╛
- TestMethod () - рдЬрд┐рд╕реЗ GetNextDataRow () рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЖрдВрдХрдбрд╝реЛрдВ рдХреЗ рд╕рд╛рде рдкрд░реАрдХреНрд╖рдг рд╕реЗ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдкреВрд░реНрдг рдЙрджрд╛рд╣рд░рдг рдХреЛрдб using System; using System.Text; using System.Collections.Generic; using System.Linq; using Microsoft.VisualStudio.TestTools.UnitTesting; namespace HabraDrivenTests {
рдирддреАрдЬрддрди, рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╡рд┐рдХреГрдд рдкреИрдВрддрд░реЗрдмрд╛рдЬрд╝реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдореИрдВ рдХреЗрд╡рд▓ рдЧрд┐рд░реА рд╣реБрдИ рдкрд░реАрдХреНрд╖рд╛ рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдореЗрдВ рдХрд╛рдордпрд╛рдм рд░рд╣рд╛ред

рд╕реНрд░реЛрдд рдХреЛрдб рдФрд░ рд▓рд┐рдВрдХ
рдЕрдиреНрдп рд╕рдВрдмрдВрдзрд┐рдд рд╕рд╛рдордЧреНрд░реА:
рдиреЛрдЯ 1: рдлрд╝рд╛рдЗрд▓ TestRows.cs рдореЗрдВ рдХреЛрдб рдХреА 30,000 рд▓рд╛рдЗрдиреЗрдВ рд╣реИрдВред рдпрджрд┐ рдЖрдкрдХрд╛ рд╡реЗрддрди рдмреЛрдирд╕ рд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд╕рд┐рд╕реНрдЯрдо рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЖрдкрдХреЛ $ 1 рдорд┐рд▓рд┐рдпрди рдХрд╛ рдмреЛрдирд╕ рджреЗрддрд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдк рдореБрдЭреЗ рдЗрд╕ рд░рд╛рд╢рд┐ рдХрд╛ рдХрдо рд╕реЗ рдХрдо 5% рднреЗрдЬрддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЙрдЪрд┐рдд рд╣реЛрдЧрд╛ред
рдиреЛрдЯ 2: ConvertToNumber рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдпрд╣ рд╕рднреА рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЛ рдкрд╛рд╕ рдХрд░реЗред
рдзреНрдпрд╛рди: "рд▓реЗрдЦрдХ рдХреА рд╢реИрд▓реАред"