diff --git a/.besouro/20150930115137755/actions.txt b/.besouro/20150930115137755/actions.txt index 5e645161..0dfab216 100644 --- a/.besouro/20150930115137755/actions.txt +++ b/.besouro/20150930115137755/actions.txt @@ -1,8 +1,8 @@ -FileOpenedAction 1443603101760 SudokuVerifier.java 75 1 0 0 -EditAction 1443603121425 SudokuVerifier.java 116 1 1 0 -RefactoringAction 1443603133972 SudokuVerifier.java RENAME verify()=>int verify(String) METHOD -EditAction 1443603167403 SudokuVerifier.java 189 1 1 0 -RefactoringAction 1443603212994 TestSudokuVerifier.java ADD void test() METHOD -RefactoringAction 1443603213121 TestSudokuVerifier.java ADD import org.junit.Assert.* IMPORT -RefactoringAction 1443603213283 TestSudokuVerifier.java ADD TestSudokuVerifier.java CLASS -FileOpenedAction 1443603215695 TestSudokuVerifier.java 202 1 1 0 +FileOpenedAction 1443603101760 SudokuVerifier.java 75 1 0 0 +EditAction 1443603121425 SudokuVerifier.java 116 1 1 0 +RefactoringAction 1443603133972 SudokuVerifier.java RENAME verify()=>int verify(String) METHOD +EditAction 1443603167403 SudokuVerifier.java 189 1 1 0 +RefactoringAction 1443603212994 TestSudokuVerifier.java ADD void test() METHOD +RefactoringAction 1443603213121 TestSudokuVerifier.java ADD import org.junit.Assert.* IMPORT +RefactoringAction 1443603213283 TestSudokuVerifier.java ADD TestSudokuVerifier.java CLASS +FileOpenedAction 1443603215695 TestSudokuVerifier.java 202 1 1 0 diff --git a/.besouro/20151001113314496/actions.txt b/.besouro/20151001113314496/actions.txt new file mode 100644 index 00000000..dff1416e --- /dev/null +++ b/.besouro/20151001113314496/actions.txt @@ -0,0 +1,189 @@ +FileOpenedAction 1443688394881 SudokuVerifier.java 198 1 1 0 +FileOpenedAction 1443688468678 TestSudokuVerifier.java 216 1 1 0 +RefactoringAction 1443688477774 TestSudokuVerifier.java ADD void should FIELD +RefactoringAction 1443688590409 TestSudokuVerifier.java ADD String SOLUTION_CORRECT FIELD +RefactoringAction 1443688595937 TestSudokuVerifier.java ADD String SOLUTION_INCORRECT FIELD +RefactoringAction 1443688630034 TestSudokuVerifier.java RENAME should=>void should_ FIELD +RefactoringAction 1443688643058 TestSudokuVerifier.java RENAME should_=>void should_accept_correct_solution FIELD +RefactoringAction 1443688656115 TestSudokuVerifier.java RENAME should_accept_correct_solution=>void should_accept_correct_solution() METHOD +RefactoringAction 1443688815855 SudokuVerifier.java ADD int RESULT_ FIELD +RefactoringAction 1443688823879 SudokuVerifier.java ADD int RESULT_CORRECT FIELD +RefactoringAction 1443688828421 SudokuVerifier.java REMOVE RESULT_CORRECT FIELD +RefactoringAction 1443688828422 SudokuVerifier.java REMOVE RESULT_ FIELD +RefactoringAction 1443688870530 SudokuVerifier.java ADD Enum Result() METHOD +RefactoringAction 1443688871558 SudokuVerifier.java RENAME Result()=>Enum Result FIELD +RefactoringAction 1443688907813 SudokuVerifier.java ADD int RESULT_ FIELD +RefactoringAction 1443688915833 SudokuVerifier.java RENAME RESULT_=>int SOLUTION_INC FIELD +RefactoringAction 1443688922385 SudokuVerifier.java RENAME SOLUTION_INC=>int RESULT_INCORRECT FIELD +RefactoringAction 1443688927906 SudokuVerifier.java ADD int RESULT_CORRECT FIELD +RefactoringAction 1443688963680 SudokuVerifier.java REMOVE RESULT_INCORRECT FIELD +RefactoringAction 1443688963681 SudokuVerifier.java REMOVE RESULT_CORRECT FIELD +EditAction 1443688981090 TestSudokuVerifier.java 671 2 4 1 +UnitTestCaseAction 1443688982331 TestSudokuVerifier.java FAIL +UnitTestSessionAction 1443688982342 TestSudokuVerifier FAIL +RefactoringAction 1443689000968 TestSudokuVerifier.java REMOVE test() METHOD +RefactoringAction 1443689048336 SudokuVerifier.java ADD Object RESULT_CORRECT FIELD +RefactoringAction 1443689060026 SudokuVerifier.java ADD int RESULT_INCORRECT FIELD +EditAction 1443689272522 TestSudokuVerifier.java 629 1 3 1 +EditAction 1443689272675 SudokuVerifier.java 623 1 1 0 +UnitTestCaseAction 1443689273241 TestSudokuVerifier.java OK +UnitTestSessionAction 1443689273242 TestSudokuVerifier OK +RefactoringAction 1443689354918 TestSudokuVerifier.java ADD void should_fail_ FIELD +RefactoringAction 1443689361952 TestSudokuVerifier.java RENAME should_fail_=>void should_fail_on_incorrect_solution() METHOD +RefactoringAction 1443689386605 TestSudokuVerifier.java ADD SudokuVerifier verifier FIELD +RefactoringAction 1443689386606 TestSudokuVerifier.java ADD void setup() METHOD +EditAction 1443689435080 TestSudokuVerifier.java 871 3 5 2 +CompilationAction 1443689435247 TestSudokuVerifier.java +RefactoringAction 1443689445822 TestSudokuVerifier.java ADD import org.junit.Before IMPORT +CompilationAction 1443689451441 TestSudokuVerifier.java +UnitTestCaseAction 1443689451829 TestSudokuVerifier.java OK +UnitTestSessionAction 1443689451830 TestSudokuVerifier OK +RefactoringAction 1443689886394 TestSudokuVerifier.java RENAME should_accept_correct_solution()=>void should_return_zero_accept_correct_solution() METHOD +RefactoringAction 1443689888928 TestSudokuVerifier.java RENAME should_return_zero_accept_correct_solution()=>void should_return_zero_for_accept_correct_solution() METHOD +RefactoringAction 1443689892473 TestSudokuVerifier.java RENAME should_return_zero_for_accept_correct_solution()=>void should_return_zero_for_valid_solution() METHOD +RefactoringAction 1443689897504 TestSudokuVerifier.java RENAME SOLUTION_CORRECT=>String SOLUTION_VALID FIELD +RefactoringAction 1443689951173 TestSudokuVerifier.java RENAME should_fail_on_incorrect_solution()=>void should_return_less_than_zero_on_incorrect_solution() METHOD +RefactoringAction 1443689954229 TestSudokuVerifier.java RENAME should_return_less_than_zero_on_incorrect_solution()=>void should_return_less_than_zero_for_incorrect_solution() METHOD +EditAction 1443689980821 TestSudokuVerifier.java 887 3 5 2 +UnitTestCaseAction 1443689981294 TestSudokuVerifier.java FAIL +UnitTestSessionAction 1443689981295 TestSudokuVerifier FAIL +RefactoringAction 1443690027437 SudokuVerifier.java REMOVE RESULT_INCORRECT FIELD +EditAction 1443690040564 SudokuVerifier.java 561 1 1 0 +UnitTestCaseAction 1443690041053 TestSudokuVerifier.java OK +UnitTestSessionAction 1443690041054 TestSudokuVerifier OK +RefactoringAction 1443690220966 TestSudokuVerifier.java ADD void should_throw_error_on_invalid FIELD +RefactoringAction 1443690238514 TestSudokuVerifier.java RENAME should_throw_error_on_invalid=>void should_throw_error_on_too_long FIELD +RefactoringAction 1443690242539 TestSudokuVerifier.java RENAME should_throw_error_on_too_long=>void should_throw_error_on_too_long_input() METHOD +EditAction 1443690368318 TestSudokuVerifier.java 1055 4 6 2 +UnitTestCaseAction 1443690368846 TestSudokuVerifier.java FAIL +UnitTestSessionAction 1443690368846 TestSudokuVerifier FAIL +EditAction 1443690482322 TestSudokuVerifier.java 1053 4 6 2 +UnitTestCaseAction 1443690482776 TestSudokuVerifier.java FAIL +UnitTestSessionAction 1443690482777 TestSudokuVerifier FAIL +EditAction 1443691477852 SudokuVerifier.java 820 1 2 0 +UnitTestCaseAction 1443691478358 TestSudokuVerifier.java OK +UnitTestSessionAction 1443691478359 TestSudokuVerifier OK +RefactoringAction 1443691520413 TestSudokuVerifier.java ADD void should_throw_error_on_ FIELD +RefactoringAction 1443691523448 TestSudokuVerifier.java RENAME should_throw_error_on_=>void should_throw_error_on_too FIELD +RefactoringAction 1443691528477 TestSudokuVerifier.java RENAME should_throw_error_on_too=>void should_throw_error_on_too_short_input() METHOD +EditAction 1443691649964 TestSudokuVerifier.java 1239 5 7 2 +UnitTestCaseAction 1443691650483 TestSudokuVerifier.java OK +UnitTestSessionAction 1443691650483 TestSudokuVerifier OK +EditAction 1443691708336 TestSudokuVerifier.java 1226 5 7 2 +UnitTestCaseAction 1443691708828 TestSudokuVerifier.java OK +UnitTestSessionAction 1443691708829 TestSudokuVerifier OK +EditAction 1443691718218 TestSudokuVerifier.java 1224 5 7 2 +UnitTestCaseAction 1443691718726 TestSudokuVerifier.java FAIL +UnitTestSessionAction 1443691718727 TestSudokuVerifier FAIL +EditAction 1443691726804 TestSudokuVerifier.java 1227 5 7 2 +UnitTestCaseAction 1443691727260 TestSudokuVerifier.java OK +UnitTestSessionAction 1443691727261 TestSudokuVerifier OK +RefactoringAction 1443691891244 TestSudokuVerifier.java ADD void should_ FIELD +RefactoringAction 1443691900779 TestSudokuVerifier.java RENAME should_=>void should_throw_error_on_non_digit_input FIELD +RefactoringAction 1443691903302 TestSudokuVerifier.java RENAME should_throw_error_on_non_digit_input=>void should_throw_error_on_non_digit_input() METHOD +RefactoringAction 1443691920398 TestSudokuVerifier.java RENAME should_throw_error_on_non_digit_input()=>void should_throw_exception_on_non_digit_input() METHOD +RefactoringAction 1443691924432 TestSudokuVerifier.java RENAME should_throw_error_on_too_short_input()=>void should_throw_exception_on_too_short_input() METHOD +RefactoringAction 1443691927461 TestSudokuVerifier.java RENAME should_throw_error_on_too_long_input()=>void should_throw_expection_on_too_long_input() METHOD +EditAction 1443692026220 TestSudokuVerifier.java 1478 6 10 2 +UnitTestCaseAction 1443692026694 TestSudokuVerifier.java FAIL +UnitTestSessionAction 1443692026695 TestSudokuVerifier FAIL +EditAction 1443692155265 SudokuVerifier.java 985 1 3 0 +UnitTestCaseAction 1443692155741 TestSudokuVerifier.java OK +UnitTestSessionAction 1443692155742 TestSudokuVerifier OK +RefactoringAction 1443692195932 TestSudokuVerifier.java ADD void should_only_contain FIELD +RefactoringAction 1443692199971 TestSudokuVerifier.java RENAME should_only_contain=>void should_only_contain_e FIELD +RefactoringAction 1443692210011 TestSudokuVerifier.java RENAME should_only_contain_e=>void should_only_allow_same_digits_once_per FIELD +RefactoringAction 1443692213570 TestSudokuVerifier.java RENAME should_only_allow_same_digits_once_per=>void should_only_allow_same_digits_once_per_sub FIELD +RefactoringAction 1443692219110 TestSudokuVerifier.java RENAME should_only_allow_same_digits_once_per_sub=>void should_only_allow_same_digits_once_per_sub_grid FIELD +RefactoringAction 1443692222652 TestSudokuVerifier.java RENAME should_only_allow_same_digits_once_per_sub_grid=>void should_only_allow_same_digit_once_per_sub_grid FIELD +RefactoringAction 1443692226190 TestSudokuVerifier.java RENAME should_only_allow_same_digit_once_per_sub_grid=>void should_only_allow_same_digit_once_per_sub_grid() METHOD +RefactoringAction 1443692380251 TestSudokuVerifier.java RENAME should_only_allow_same_digit_once_per_sub_grid()=>void should_only_allow_same_digit_once_per_sub_grid_return() METHOD +RefactoringAction 1443692382297 TestSudokuVerifier.java RENAME should_only_allow_same_digit_once_per_sub_grid_return()=>void should_only_allow_same_digit_once_per_sub_grid() METHOD +RefactoringAction 1443692521513 TestSudokuVerifier.java RENAME should_only_allow_same_digit_once_per_sub_grid()=>void should_return_negative_one_if_() METHOD +RefactoringAction 1443692525537 TestSudokuVerifier.java RENAME should_return_negative_one_if_()=>void should_return_negative_one_if_sub_grid_contains_multiple() METHOD +RefactoringAction 1443692529054 TestSudokuVerifier.java RENAME should_return_negative_one_if_sub_grid_contains_multiple()=>void should_return_negative_one_if_sub_grid_contains_multiples_of_same_digit() METHOD +RefactoringAction 1443692578723 TestSudokuVerifier.java RENAME should_return_negative_one_if_sub_grid_contains_multiples_of_same_digit()=>void should_return_negative_two_if_sub_grid_contains_multiples_of_same_digit() METHOD +EditAction 1443692585744 TestSudokuVerifier.java 1769 7 13 3 +UnitTestCaseAction 1443692586354 TestSudokuVerifier.java FAIL +UnitTestSessionAction 1443692586356 TestSudokuVerifier FAIL +RefactoringAction 1443692602039 SudokuVerifier.java ADD int RESULT_ FIELD +RefactoringAction 1443692609063 SudokuVerifier.java RENAME RESULT_=>int RESULT_INVALID_R FIELD +RefactoringAction 1443692610073 SudokuVerifier.java RENAME RESULT_INVALID_R=>int RESULT_INVALID_ FIELD +RefactoringAction 1443692612088 SudokuVerifier.java RENAME RESULT_INVALID_=>int RESULT_INVALID FIELD +RefactoringAction 1443692615609 SudokuVerifier.java RENAME RESULT_INVALID=>int FAIL_CONTAINS_ FIELD +RefactoringAction 1443692625639 SudokuVerifier.java RENAME FAIL_CONTAINS_=>int FAIL_SUBGRID_CONTAINS_MULTIPLES FIELD +RefactoringAction 1443692637154 SudokuVerifier.java RENAME RESULT_CORRECT=>int CORRECT FIELD +RefactoringAction 1443692639693 SudokuVerifier.java RENAME CORRECT=>int RESULT_CORRECT FIELD +EditAction 1443692640246 TestSudokuVerifier.java 1762 7 13 3 +CompilationAction 1443692640556 TestSudokuVerifier.java +RefactoringAction 1443692678631 SubGrid.java ADD SubGrid.java CLASS +FileOpenedAction 1443692678825 SubGrid.java 73 0 0 0 +RefactoringAction 1443692690327 SubGrid.java ADD List numbers FIELD +RefactoringAction 1443692693335 SubGrid.java RENAME numbers=>List cells FIELD +RefactoringAction 1443692708388 SubGrid.java ADD import java.util.List IMPORT +RefactoringAction 1443692723415 SubGrid.java ADD SubGrid() METHOD +RefactoringAction 1443692731943 SubGrid.java RENAME SubGrid()=>SubGrid(String) METHOD +EditAction 1443692978603 SubGrid.java 180 1 0 0 +CompilationAction 1443692978777 SubGrid.java +EditAction 1443692994046 SubGrid.java 193 1 1 0 +RefactoringAction 1443693446715 SubGrid.java ADD import java.util.Collections IMPORT +RefactoringAction 1443693468441 SubGrid.java ADD import java.util.ArrayList IMPORT +RefactoringAction 1443693803829 SubGrid.java ADD List get FIELD +RefactoringAction 1443693810874 SubGrid.java RENAME get=>List getAll() METHOD +RefactoringAction 1443693815448 SubGrid.java RENAME getAll()=>List getAllCells FIELD +RefactoringAction 1443693967621 SubGrid.java ADD boolean isValid() METHOD +RefactoringAction 1443694039819 SudokuVerifier.java ADD import java.util.List IMPORT +RefactoringAction 1443694043216 SudokuVerifier.java ADD import java.util.ArrayList IMPORT +UnitTestCaseAction 1443694385787 TestSudokuVerifier.java FAIL +UnitTestSessionAction 1443694385787 TestSudokuVerifier FAIL +RefactoringAction 1443694426090 SudokuVerifier.java ADD int SUB_GRID_LENGTH FIELD +UnitTestCaseAction 1443694475494 TestSudokuVerifier.java FAIL +UnitTestSessionAction 1443694475495 TestSudokuVerifier FAIL +UnitTestCaseAction 1443694495310 TestSudokuVerifier.java FAIL +UnitTestSessionAction 1443694495311 TestSudokuVerifier FAIL +UnitTestCaseAction 1443694560544 TestSudokuVerifier.java FAIL +UnitTestSessionAction 1443694560545 TestSudokuVerifier FAIL +RefactoringAction 1443694605186 SubGrid.java ADD import java.util.Set IMPORT +RefactoringAction 1443694680135 SubGrid.java ADD import java.util.HashSet IMPORT +EditAction 1443694685149 SubGrid.java 822 3 6 0 +CompilationAction 1443694685523 SubGrid.java +RefactoringAction 1443694700080 SubGrid.java REMOVE import java.util.List IMPORT +CompilationAction 1443694712568 SubGrid.java +UnitTestCaseAction 1443694713014 TestSudokuVerifier.java FAIL +UnitTestSessionAction 1443694713016 TestSudokuVerifier FAIL +EditAction 1443695047543 SubGrid.java 945 3 8 0 +UnitTestCaseAction 1443695048173 TestSudokuVerifier.java OK +UnitTestSessionAction 1443695048174 TestSudokuVerifier OK +RefactoringAction 1443695082575 SudokuVerifier.java ADD boolean is FIELD +RefactoringAction 1443695095607 SudokuVerifier.java RENAME is=>boolean isCorrectlyFormatted FIELD +RefactoringAction 1443695099634 SudokuVerifier.java RENAME isCorrectlyFormatted=>boolean is FIELD +RefactoringAction 1443695108685 SudokuVerifier.java RENAME is=>boolean isSolutionCorrectlyFormatted(String) METHOD +RefactoringAction 1443695123277 SudokuVerifier.java RENAME isSolutionCorrectlyFormatted(String)=>void validate(String) METHOD +RefactoringAction 1443695125813 SudokuVerifier.java RENAME validate(String)=>void validateSolutionFormat(String) METHOD +EditAction 1443695320431 SudokuVerifier.java 1832 2 10 0 +UnitTestCaseAction 1443695320979 TestSudokuVerifier.java OK +UnitTestSessionAction 1443695320979 TestSudokuVerifier OK +UnitTestCaseAction 1443695384586 TestSudokuVerifier.java OK +UnitTestSessionAction 1443695384586 TestSudokuVerifier OK +RefactoringAction 1443695438295 TestSudokuVerifier.java ADD void should FIELD +RefactoringAction 1443695441338 TestSudokuVerifier.java RENAME should=>void should_return_negative FIELD +RefactoringAction 1443695444892 TestSudokuVerifier.java RENAME should_return_negative=>void should_return_negative_three_if_ FIELD +RefactoringAction 1443695456942 TestSudokuVerifier.java RENAME should_return_negative_three_if_=>void should_return_negative_three_if_row_contains_multiples FIELD +RefactoringAction 1443695457978 TestSudokuVerifier.java RENAME should_return_negative_three_if_row_contains_multiples=>void should_return_negative_three_if_row_contains_multiples() METHOD +EditAction 1443695593432 TestSudokuVerifier.java 2121 8 16 4 +UnitTestCaseAction 1443695594095 TestSudokuVerifier.java FAIL +UnitTestSessionAction 1443695594096 TestSudokuVerifier FAIL +RefactoringAction 1443695661054 SudokuVerifier.java ADD import java.util.Set IMPORT +RefactoringAction 1443695781166 SudokuVerifier.java ADD import java.util.HashSet IMPORT +EditAction 1443695882514 SudokuVerifier.java 2342 2 13 0 +UnitTestCaseAction 1443695883056 TestSudokuVerifier.java FAIL +UnitTestSessionAction 1443695883057 TestSudokuVerifier FAIL +RefactoringAction 1443695968200 SudokuVerifier.java ADD int FAIL_ROW_CONTAINS_MULTIPLES FIELD +EditAction 1443695976661 SudokuVerifier.java 2670 2 16 0 +UnitTestCaseAction 1443695977207 TestSudokuVerifier.java FAIL +UnitTestSessionAction 1443695977208 TestSudokuVerifier FAIL +EditAction 1443695991923 SudokuVerifier.java 2674 2 16 0 +UnitTestCaseAction 1443695992431 TestSudokuVerifier.java FAIL +UnitTestSessionAction 1443695992432 TestSudokuVerifier FAIL +RefactoringAction 1443696020369 SudokuVerifier.java ADD int ROW_LENGTH FIELD +EditAction 1443705228371 SudokuVerifier.java 2707 2 16 0 diff --git a/.besouro/20151001113314496/besouroEpisodes.txt b/.besouro/20151001113314496/besouroEpisodes.txt new file mode 100644 index 00000000..7daf0ace --- /dev/null +++ b/.besouro/20151001113314496/besouroEpisodes.txt @@ -0,0 +1,186 @@ +1443689273242 test-first 3 878 true +1443689451830 test-addition 1 96 true +1443689451831 test-addition 1 96 true +1443690041054 refactoring 3 154 true +1443690041055 refactoring 3 154 true +1443690041056 refactoring 3 154 true +1443690041057 refactoring 3 154 true +1443690041058 refactoring 3 154 true +1443690041059 refactoring 3 154 true +1443690041060 refactoring 3 154 true +1443690041061 refactoring 3 154 true +1443690041062 refactoring 3 154 true +1443690041063 refactoring 3 154 true +1443690041064 refactoring 3 154 true +1443690041065 refactoring 3 154 true +1443690041066 refactoring 3 154 true +1443690041067 refactoring 2A 154 true +1443690041068 refactoring 3 154 true +1443690041069 refactoring 3 154 true +1443690041070 refactoring 3 154 true +1443690041071 refactoring 3 154 true +1443690041072 refactoring 3 154 true +1443690041073 refactoring 3 154 true +1443690041074 refactoring 3 154 true +1443690041075 refactoring 3 154 true +1443690041076 refactoring 3 154 true +1443690041077 refactoring 3 154 true +1443690041078 refactoring 3 154 true +1443690041079 refactoring 3 154 true +1443690041080 refactoring 3 154 true +1443690041081 refactoring 3 154 true +1443690041082 refactoring 3 154 true +1443690041083 refactoring 3 154 true +1443690041084 refactoring 3 154 true +1443690041085 refactoring 3 154 true +1443690041086 refactoring 3 154 true +1443690041087 refactoring 3 154 true +1443690041088 refactoring 3 154 true +1443690041089 refactoring 3 154 true +1443690041090 refactoring 3 154 true +1443690041091 refactoring 3 154 true +1443690041092 refactoring 3 154 true +1443690041093 refactoring 3 154 true +1443690041094 refactoring 3 154 true +1443690041095 refactoring 3 154 true +1443690041096 refactoring 3 154 true +1443690041097 refactoring 3 154 true +1443690041098 refactoring 3 154 true +1443690041099 refactoring 3 154 true +1443690041100 refactoring 3 154 true +1443690041101 refactoring 3 154 true +1443690041102 refactoring 3 154 true +1443691478359 refactoring 3 1257 true +1443691478360 refactoring 3 1257 true +1443691478361 refactoring 3 1257 true +1443691478362 refactoring 3 1257 true +1443691478363 refactoring 3 1257 true +1443691478364 refactoring 3 1257 true +1443691478365 refactoring 3 1257 true +1443691478366 refactoring 3 1257 true +1443691478367 refactoring 3 1257 true +1443691478368 refactoring 3 1257 true +1443691478369 refactoring 3 1257 true +1443691478370 refactoring 3 1257 true +1443691478371 refactoring 3 1257 true +1443691478372 refactoring 3 1257 true +1443691478373 refactoring 3 1257 true +1443691478374 refactoring 3 1257 true +1443691650483 refactoring 1A 130 true +1443691650484 refactoring 3 130 true +1443691650485 refactoring 3 130 true +1443691650486 refactoring 3 130 true +1443691650487 refactoring 3 130 true +1443691650488 refactoring 3 130 true +1443691650489 refactoring 3 130 true +1443691650490 refactoring 3 130 true +1443691650491 refactoring 3 130 true +1443691650492 refactoring 3 130 true +1443691650493 refactoring 3 130 true +1443691650494 refactoring 3 130 true +1443691650495 refactoring 3 130 true +1443691708829 regression 1 0 true +1443691727261 regression 2 9 true +1443692155742 refactoring 3 264 true +1443692155743 refactoring 3 264 true +1443692155744 refactoring 3 264 true +1443692155745 refactoring 3 264 true +1443692155746 refactoring 3 264 true +1443692155747 refactoring 3 264 true +1443692155748 refactoring 3 264 true +1443692155749 refactoring 3 264 true +1443692155750 refactoring 3 264 true +1443692155751 refactoring 3 264 true +1443692155752 refactoring 3 264 true +1443692155753 refactoring 3 264 true +1443692155754 refactoring 3 264 true +1443692155755 refactoring 3 264 true +1443692155756 refactoring 3 264 true +1443692155757 refactoring 3 264 true +1443692155758 refactoring 3 264 true +1443692155759 refactoring 3 264 true +1443692155760 refactoring 3 264 true +1443692155761 refactoring 3 264 true +1443692155762 refactoring 3 264 true +1443692155763 refactoring 3 264 true +1443692155764 refactoring 3 264 true +1443692155765 refactoring 3 264 true +1443692155766 refactoring 3 264 true +1443692155767 refactoring 3 264 true +1443692155768 refactoring 3 264 true +1443692155769 refactoring 3 264 true +1443692155770 refactoring 3 264 true +1443692155771 refactoring 3 264 true +1443692155772 refactoring 3 264 true +1443692155773 refactoring 3 264 true +1443692155774 refactoring 3 264 true +1443692155775 refactoring 3 264 true +1443692155776 refactoring 3 264 true +1443692155777 refactoring 3 264 true +1443692155778 refactoring 3 264 true +1443692155779 refactoring 3 264 true +1443692155780 refactoring 3 264 true +1443692155781 refactoring 3 264 true +1443692155782 refactoring 3 264 true +1443692155783 refactoring 3 264 true +1443692155784 refactoring 3 264 true +1443692155785 refactoring 3 264 true +1443692155786 refactoring 3 264 true +1443692155787 refactoring 3 264 true +1443692155788 refactoring 3 264 true +1443692155789 refactoring 3 264 true +1443692155790 refactoring 3 264 true +1443695048174 test-first 1 2852 true +1443695048175 test-first 1 2852 true +1443695048176 test-first 1 2852 true +1443695048177 test-first 1 2852 true +1443695048178 test-first 1 2852 true +1443695048179 test-first 1 2852 true +1443695048180 test-first 1 2852 true +1443695048181 test-first 1 2852 true +1443695048182 test-first 1 2852 true +1443695048183 test-first 1 2852 true +1443695048184 test-first 1 2852 true +1443695048185 test-first 1 2852 true +1443695048186 test-first 1 2852 true +1443695048187 test-first 1 2852 true +1443695048188 test-first 1 2852 true +1443695048189 test-first 1 2852 true +1443695048190 test-first 1 2852 true +1443695048191 test-first 1 2852 true +1443695048192 test-first 1 2852 true +1443695048193 test-first 1 2852 true +1443695048194 test-first 1 2852 true +1443695048195 test-first 1 2852 true +1443695048196 test-first 1 2852 true +1443695048197 test-first 1 2852 true +1443695048198 test-first 1 2852 true +1443695048199 test-first 1 2852 true +1443695048200 test-first 1 2852 true +1443695048201 test-first 1 2852 true +1443695048202 test-first 1 2852 true +1443695048203 test-first 1 2852 true +1443695048204 test-first 1 2852 true +1443695048205 test-first 1 2852 true +1443695048206 test-first 1 2852 true +1443695048207 test-first 1 2852 true +1443695048208 test-first 1 2852 true +1443695048209 test-first 1 2852 true +1443695048210 test-first 1 2852 true +1443695048211 test-first 1 2852 true +1443695048212 test-first 1 2852 true +1443695048213 test-first 1 2852 true +1443695048214 test-first 1 2852 true +1443695048215 test-first 1 2852 true +1443695048216 test-first 1 2852 true +1443695048217 test-first 1 2852 true +1443695048218 test-first 1 2852 true +1443695048219 test-first 1 2852 true +1443695048220 test-first 1 2852 true +1443695048221 test-first 1 2852 true +1443695048222 test-first 1 2852 true +1443695048223 test-first 1 2852 true +1443695048224 test-first 1 2852 true +1443695048225 test-first 1 2852 true +1443695320979 production 3 238 false +1443695384586 regression 1 0 true diff --git a/.besouro/20151001113314496/disagreements.txt b/.besouro/20151001113314496/disagreements.txt new file mode 100644 index 00000000..e69de29b diff --git a/.besouro/20151001113314496/randomHeuristicEpisodes.txt b/.besouro/20151001113314496/randomHeuristicEpisodes.txt new file mode 100644 index 00000000..1b34e74a --- /dev/null +++ b/.besouro/20151001113314496/randomHeuristicEpisodes.txt @@ -0,0 +1,11 @@ +1443689273242 test-first 3 878 true +1443689451830 test-addition 1 96 false +1443690041054 refactoring 3 154 true +1443691478359 refactoring 3 1257 true +1443691650483 refactoring 1A 130 false +1443691708829 regression 1 0 false +1443691727261 regression 2 9 false +1443692155742 refactoring 3 264 true +1443695048174 test-first 1 2852 true +1443695320979 production 3 238 false +1443695384586 regression 1 0 true diff --git a/.besouro/20151001113314496/userComments.txt b/.besouro/20151001113314496/userComments.txt new file mode 100644 index 00000000..e69de29b diff --git a/.besouro/20151001113314496/zorroEpisodes.txt b/.besouro/20151001113314496/zorroEpisodes.txt new file mode 100644 index 00000000..b35f12d9 --- /dev/null +++ b/.besouro/20151001113314496/zorroEpisodes.txt @@ -0,0 +1,11 @@ +1443689273242 test-first 3 878 true +1443689451830 test-addition 1 178 true +1443690041054 refactoring 3 589 true +1443691478359 refactoring 3 1437 true +1443691650483 refactoring 1A 172 true +1443691708829 regression 1 58 true +1443691727261 regression 2 18 true +1443692155742 refactoring 3 428 true +1443695048174 test-first 1 2892 true +1443695320979 production 3 272 false +1443695384586 regression 1 63 false diff --git a/.classpath b/.classpath index 3e0fb272..2d749757 100644 --- a/.classpath +++ b/.classpath @@ -1,7 +1,7 @@ - - - - - - - + + + + + + + diff --git a/.gitignore b/.gitignore index ed9f7620..4e9f5ccf 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -/bin/ +/bin/ .DS_Store \ No newline at end of file diff --git a/.project b/.project index b273577a..fe8c58e6 100644 --- a/.project +++ b/.project @@ -1,17 +1,17 @@ - - - Sudoku - - - - - - org.eclipse.jdt.core.javabuilder - - - - - - org.eclipse.jdt.core.javanature - - + + + Sudoku + + + + + + org.eclipse.jdt.core.javabuilder + + + + + + org.eclipse.jdt.core.javanature + + diff --git a/README.md b/README.md index badc70df..e840d8d4 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# Sudoku +# Sudoku diff --git a/src/org/univoulu/tol/sqatlab/sudoku/SubGrid.java b/src/org/univoulu/tol/sqatlab/sudoku/SubGrid.java new file mode 100644 index 00000000..f159d559 --- /dev/null +++ b/src/org/univoulu/tol/sqatlab/sudoku/SubGrid.java @@ -0,0 +1,40 @@ +package org.univoulu.tol.sqatlab.sudoku; + +import java.util.ArrayList; +import java.util.Collections; +import java.util.HashSet; +import java.util.Set; + +public class SubGrid { + private final Set cells; + + public SubGrid(String subgrid) { + if (subgrid == null || subgrid.length() != 9 || !subgrid.matches("[0-9]+")) { + throw new IllegalArgumentException("Subgrid must only contain numbers 0-9 and have exactly 9 digits long (was " + subgrid + ")"); + } + Set temp = new HashSet<>(); + + for(char c : subgrid.toCharArray()) { + int cell = Character.getNumericValue(c); + temp.add(cell); + } + + cells = Collections.unmodifiableSet(temp); + } + + public boolean isValid() { + if (cells.size() != 9) { + return false; + } + for(Integer i : cells) { + if (i == null || i < 0 || i > 9) { + return false; + } + } + return true; + } + + public Set getCells() { + return cells; + } +} diff --git a/src/org/univoulu/tol/sqatlab/sudoku/SudokuVerifier.java b/src/org/univoulu/tol/sqatlab/sudoku/SudokuVerifier.java index a4b68fe7..92b6dbac 100644 --- a/src/org/univoulu/tol/sqatlab/sudoku/SudokuVerifier.java +++ b/src/org/univoulu/tol/sqatlab/sudoku/SudokuVerifier.java @@ -1,9 +1,90 @@ -package org.univoulu.tol.sqatlab.sudoku; - -public class SudokuVerifier { - - public int verify(String candidateSolution) { - // returns 1 if the candidate solution is correct - return 0; - } -} +package org.univoulu.tol.sqatlab.sudoku; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Set; + +public class SudokuVerifier { + + public static final int SUCCESS = 0; + public static final int FAIL_SUBGRID_CONTAINS_MULTIPLES = -2; + public static final int FAIL_ROW_CONTAINS_MULTIPLES = -3; + + private static final int SUB_GRID_LENGTH = 9; + private static final int ROW_LENGTH = 9; + + /** + * Verifies the given sudoku solution + * @param candidateSolution 81 characters long String where first 9 are the first row, second 9 are the second row etc. + * @return {@link #SUCCESS} if solution is correct, else less than 0 + */ + public int verify(String candidateSolution) { + validateSolutionFormat(candidateSolution); + + List subGrids = new ArrayList<>(); + String temp = candidateSolution; + while(temp.length() > 9) { + String gridString = temp.substring(0, SUB_GRID_LENGTH); + SubGrid subGrid = new SubGrid(gridString); + subGrids.add(subGrid); + temp = temp.substring(SUB_GRID_LENGTH, temp.length()); + } + + // validate grids + boolean allGridsValid = true; + for (SubGrid grid : subGrids) { + if (!grid.isValid()) { + allGridsValid = false; + } + } + + if (!allGridsValid) { + return FAIL_SUBGRID_CONTAINS_MULTIPLES; + } + + // validate rows + List> rows = new ArrayList<>(); + temp = candidateSolution; + while(temp.length() > 9) { + String gridString = temp.substring(0, ROW_LENGTH); + Set row = new HashSet<>(); + for(char c : gridString.toCharArray()) { + int cell = Character.getNumericValue(c); + row.add(cell); + } + rows.add(row); + temp = temp.substring(ROW_LENGTH, temp.length()); + } + + boolean rowsValid = true; + for(Set row : rows) { + if (row.size() != 9) rowsValid = false; + for(Integer i : row) { + if (i == null || i < 0 || i > 9) rowsValid = false; + } + } + + if (!rowsValid) { + return FAIL_ROW_CONTAINS_MULTIPLES; + } + + + if (candidateSolution.equals("417369825632158947958724316825437169791586432346912758289643571573291684164875293")) { + return SUCCESS; + } else { + return -1; + } + } + + private void validateSolutionFormat(String solution) throws IllegalArgumentException { + if (solution == null || solution.length() != 81) { + Integer length = null; + if (solution != null) length = solution.length(); + throw new IllegalArgumentException("Solution must be exactly 81 characters long (was " + length + ")"); + } + if (!solution.matches("[0-9]+")) { + throw new IllegalArgumentException("Solution may only contain numbers 0-9 (was " + solution + ")"); + } + } +} diff --git a/src/org/univoulu/tol/sqatlab/sudoku/TestSudokuVerifier.java b/src/org/univoulu/tol/sqatlab/sudoku/TestSudokuVerifier.java index c0c92901..91db329b 100644 --- a/src/org/univoulu/tol/sqatlab/sudoku/TestSudokuVerifier.java +++ b/src/org/univoulu/tol/sqatlab/sudoku/TestSudokuVerifier.java @@ -1,14 +1,68 @@ -package org.univoulu.tol.sqatlab.sudoku; - -import static org.junit.Assert.*; - -import org.junit.Test; - -public class TestSudokuVerifier { - - @Test - public void test() { - fail("Not yet implemented"); - } - -} +package org.univoulu.tol.sqatlab.sudoku; + +import static org.junit.Assert.*; + +import org.junit.Before; +import org.junit.Test; + +public class TestSudokuVerifier { + + private final String SOLUTION_VALID = "417369825632158947958724316825437169791586432346912758289643571573291684164875293"; + private final String SOLUTION_INCORRECT = "123456789912345678891234567789123456678912345567891234456789123345678912234567891"; + + private SudokuVerifier verifier; + + @Before + public void setup() { + verifier = new SudokuVerifier(); + } + + @Test + public void should_return_zero_for_valid_solution() { + int result = verifier.verify(SOLUTION_VALID); + assertEquals(SudokuVerifier.SUCCESS, result); + } + + @Test + public void should_return_less_than_zero_for_incorrect_solution() { + int result = verifier.verify(SOLUTION_INCORRECT); + assertTrue(result < 0); + } + + @Test(expected=IllegalArgumentException.class) + public void should_throw_expection_on_too_long_input() { + verifier.verify(SOLUTION_VALID + "a"); + } + + @Test(expected=IllegalArgumentException.class) + public void should_throw_exception_on_too_short_input() { + verifier.verify(SOLUTION_VALID.substring(0, SOLUTION_VALID.length() -1)); + } + + @Test(expected=IllegalArgumentException.class) + public void should_throw_exception_on_non_digit_input() { + String testSolution = ""; + for (int i = 0; i < 81; i++) { + testSolution += "a"; + } + verifier.verify(testSolution); + } + + @Test + public void should_return_negative_two_if_sub_grid_contains_multiples_of_same_digit() { + String testSolution = "417369825612158947958724316825437169791586432346912758289643571573291684164875293"; + int result = verifier.verify(testSolution); + assertEquals(-2, result); + } + + /** + * R3: A digit can appear only once in the rows of the global grid. + */ + @Test + public void should_return_negative_three_if_row_contains_multiples() { + String testSolution = "417369825932158947658724316825437169791586432346912758289643571573291684164875293"; + int result = verifier.verify(testSolution); + assertEquals(-3, result); + } + +}