diff --git a/.besouro/20161012152902644/actions.txt b/.besouro/20161012152902644/actions.txt new file mode 100644 index 0000000..ad8a99a --- /dev/null +++ b/.besouro/20161012152902644/actions.txt @@ -0,0 +1,308 @@ +FileOpenedAction 1476275342933 SpreadsheetTest.java 803 4 7 3 +CompilationAction 1476275503008 SpreadsheetTest.java +CompilationAction 1476275503164 SpreadsheetTest.java +EditAction 1476275519071 SpreadsheetTest.java 859 4 7 3 +UnitTestCaseAction 1476275522266 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476275522267 SpreadsheetTest.java FAIL +EditAction 1476275603353 SpreadsheetTest.java 1057 4 12 3 +EditAction 1476275624871 SpreadsheetTest.java 1062 4 12 3 +EditAction 1476275629924 SpreadsheetTest.java 1063 4 12 3 +EditAction 1476275633135 SpreadsheetTest.java 1063 4 12 3 +EditAction 1476275697497 SpreadsheetTest.java 1226 4 14 5 +CompilationAction 1476275697757 SpreadsheetTest.java +CompilationAction 1476275714985 SpreadsheetTest.java +EditAction 1476275740857 SpreadsheetTest.java 1324 4 14 5 +EditAction 1476275742518 SpreadsheetTest.java 1228 4 13 4 +UnitTestCaseAction 1476275744043 SpreadsheetTest.java OK +UnitTestSessionAction 1476275744044 SpreadsheetTest.java OK +EditAction 1476275754233 SpreadsheetTest.java 1228 4 13 4 +UnitTestCaseAction 1476275754972 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476275754973 SpreadsheetTest.java FAIL +EditAction 1476275758898 SpreadsheetTest.java 1228 4 13 4 +EditAction 1476275763511 SpreadsheetTest.java 1228 4 13 4 +UnitTestCaseAction 1476275764528 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476275764528 SpreadsheetTest.java FAIL +EditAction 1476275766905 SpreadsheetTest.java 1228 4 13 4 +UnitTestCaseAction 1476275767677 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476275767678 SpreadsheetTest.java FAIL +EditAction 1476275771720 SpreadsheetTest.java 1228 4 13 4 +UnitTestCaseAction 1476275772671 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476275772672 SpreadsheetTest.java FAIL +EditAction 1476275774927 SpreadsheetTest.java 1228 4 13 4 +UnitTestCaseAction 1476275775488 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476275775488 SpreadsheetTest.java FAIL +EditAction 1476275778532 SpreadsheetTest.java 1228 4 13 4 +UnitTestCaseAction 1476275779118 SpreadsheetTest.java OK +UnitTestSessionAction 1476275779118 SpreadsheetTest.java OK +EditAction 1476275782389 SpreadsheetTest.java 1228 4 13 4 +UnitTestCaseAction 1476275783927 SpreadsheetTest.java OK +UnitTestSessionAction 1476275783928 SpreadsheetTest.java OK +RefactoringAction 1476275931097 Spreadsheet.java ADD void isString() METHOD +RefactoringAction 1476275937614 Spreadsheet.java RENAME isString()=>void contain() METHOD +RefactoringAction 1476275940128 Spreadsheet.java RENAME contain()=>void containsString() METHOD +RefactoringAction 1476275954205 Spreadsheet.java RENAME containsString()=>boolean containsString(String) METHOD +RefactoringAction 1476276061831 Spreadsheet.java ADD String evaluatedString() METHOD +EditAction 1476276067251 Spreadsheet.java 1944 9 17 0 +CompilationAction 1476276067479 Spreadsheet.java +CompilationAction 1476276067480 Spreadsheet.java +CompilationAction 1476276067480 Spreadsheet.java +EditAction 1476276072115 Spreadsheet.java 1956 9 18 0 +CompilationAction 1476276072209 Spreadsheet.java +CompilationAction 1476276072210 Spreadsheet.java +EditAction 1476276204528 Spreadsheet.java 2052 9 19 0 +CompilationAction 1476276204619 Spreadsheet.java +CompilationAction 1476276204619 Spreadsheet.java +RefactoringAction 1476276302819 Spreadsheet.java ADD int charCount FIELD +RefactoringAction 1476276303835 Spreadsheet.java RENAME charCount=>int charCount() METHOD +RefactoringAction 1476276324895 Spreadsheet.java RENAME charCount()=>int characterCount() METHOD +RefactoringAction 1476276347447 Spreadsheet.java RENAME characterCount()=>int characterCount(String) METHOD +RefactoringAction 1476276352474 Spreadsheet.java RENAME characterCount(String)=>int characterCount(String, char) METHOD +RefactoringAction 1476276426652 Spreadsheet.java RENAME characterCount(String, char)=>int characterCount(String, String) METHOD +EditAction 1476276485084 Spreadsheet.java 2251 10 21 0 +CompilationAction 1476276485197 Spreadsheet.java +CompilationAction 1476276485198 Spreadsheet.java +CompilationAction 1476276485198 Spreadsheet.java +CompilationAction 1476276485198 Spreadsheet.java +EditAction 1476276489850 Spreadsheet.java 2270 10 22 0 +CompilationAction 1476276490090 Spreadsheet.java +CompilationAction 1476276490091 Spreadsheet.java +CompilationAction 1476276490091 Spreadsheet.java +CompilationAction 1476276534856 Spreadsheet.java +CompilationAction 1476276535017 Spreadsheet.java +CompilationAction 1476276535018 Spreadsheet.java +CompilationAction 1476276535018 Spreadsheet.java +EditAction 1476276537945 Spreadsheet.java 2377 10 23 0 +CompilationAction 1476276538040 Spreadsheet.java +CompilationAction 1476276538040 Spreadsheet.java +CompilationAction 1476276538041 Spreadsheet.java +EditAction 1476276547424 Spreadsheet.java 2379 10 23 0 +CompilationAction 1476276547679 Spreadsheet.java +CompilationAction 1476276547680 Spreadsheet.java +CompilationAction 1476276547680 Spreadsheet.java +CompilationAction 1476276559331 Spreadsheet.java +CompilationAction 1476276559492 Spreadsheet.java +CompilationAction 1476276559492 Spreadsheet.java +CompilationAction 1476276663043 Spreadsheet.java +CompilationAction 1476276663043 Spreadsheet.java +CompilationAction 1476276663044 Spreadsheet.java +CompilationAction 1476276663044 Spreadsheet.java +CompilationAction 1476276691625 Spreadsheet.java +CompilationAction 1476276691780 Spreadsheet.java +CompilationAction 1476276691780 Spreadsheet.java +CompilationAction 1476276691781 Spreadsheet.java +CompilationAction 1476276838164 Spreadsheet.java +CompilationAction 1476276838320 Spreadsheet.java +CompilationAction 1476276838321 Spreadsheet.java +EditAction 1476276846050 Spreadsheet.java 2583 10 25 0 +CompilationAction 1476276846308 Spreadsheet.java +CompilationAction 1476276846309 Spreadsheet.java +EditAction 1476276871953 Spreadsheet.java 2589 10 25 0 +CompilationAction 1476276872219 Spreadsheet.java +CompilationAction 1476276872219 Spreadsheet.java +CompilationAction 1476276960144 Spreadsheet.java +CompilationAction 1476276960304 Spreadsheet.java +CompilationAction 1476276960304 Spreadsheet.java +EditAction 1476276963095 Spreadsheet.java 2617 10 25 0 +CompilationAction 1476276963338 Spreadsheet.java +CompilationAction 1476276963339 Spreadsheet.java +CompilationAction 1476276975515 Spreadsheet.java +CompilationAction 1476276975688 Spreadsheet.java +CompilationAction 1476276996178 Spreadsheet.java +RefactoringAction 1476277029166 SpreadsheetTest.java ADD void a FIELD +RefactoringAction 1476277030677 SpreadsheetTest.java RENAME a=>void a_ FIELD +RefactoringAction 1476277033689 SpreadsheetTest.java REMOVE a_ FIELD +RefactoringAction 1476277040701 SpreadsheetTest.java ADD void evaluateString() METHOD +EditAction 1476277080961 SpreadsheetTest.java 1361 5 13 4 +CompilationAction 1476277081208 SpreadsheetTest.java +CompilationAction 1476277100514 SpreadsheetTest.java +CompilationAction 1476277100674 SpreadsheetTest.java +CompilationAction 1476277115236 SpreadsheetTest.java +CompilationAction 1476277115395 SpreadsheetTest.java +EditAction 1476277121606 SpreadsheetTest.java 1432 5 15 5 +UnitTestCaseAction 1476277125039 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476277125039 SpreadsheetTest.java FAIL +EditAction 1476277183669 Spreadsheet.java 2655 10 25 0 +UnitTestCaseAction 1476277186084 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476277186084 SpreadsheetTest.java FAIL +RefactoringAction 1476277265764 Spreadsheet.java ADD boolean string FIELD +RefactoringAction 1476277277294 Spreadsheet.java REMOVE string FIELD +RefactoringAction 1476277280808 Spreadsheet.java ADD boolean STR_MARKS FIELD +RefactoringAction 1476277282322 Spreadsheet.java RENAME STR_MARKS=>boolean STR_MARKS_ FIELD +RefactoringAction 1476277286838 Spreadsheet.java RENAME STR_MARKS_=>boolean STR_MARKS_NOT_ALLOWED_ON FIELD +RefactoringAction 1476277298856 Spreadsheet.java RENAME STR_MARKS_NOT_ALLOWED_ON=>boolean STR_MARKS_NOT_ALLOWED_INSIDE_S FIELD +RefactoringAction 1476277300370 Spreadsheet.java RENAME STR_MARKS_NOT_ALLOWED_INSIDE_S=>boolean STR_MARKS_NOT_ALLOWED_INSIDE_STRING FIELD +RefactoringAction 1476277312411 Spreadsheet.java RENAME STR_MARKS_NOT_ALLOWED_INSIDE_STRING=>boolean STR_MARKS_ALLOWED_INSIDE_STRING FIELD +EditAction 1476277315022 Spreadsheet.java 2728 10 25 0 +EditAction 1476277374017 Spreadsheet.java 2772 10 25 0 +EditAction 1476277380207 Spreadsheet.java 2774 10 25 0 +EditAction 1476277554292 Spreadsheet.java 2924 10 26 0 +CompilationAction 1476277554539 Spreadsheet.java +RefactoringAction 1476277643206 Spreadsheet.java ADD String removePrecedingAndTrailingStringMark FIELD +RefactoringAction 1476277645721 Spreadsheet.java RENAME removePrecedingAndTrailingStringMark=>String removePrecedingAndTrailingStringMark() METHOD +RefactoringAction 1476277654736 Spreadsheet.java RENAME removePrecedingAndTrailingStringMark()=>String removePrecedingAndTrailingStringMark(String) METHOD +CompilationAction 1476277791148 Spreadsheet.java +RefactoringAction 1476277797922 Spreadsheet.java RENAME removePrecedingAndTrailingStringMark(String)=>String removeFirstAndLast(String) METHOD +RefactoringAction 1476277799440 Spreadsheet.java RENAME removeFirstAndLast(String)=>String removeFirstAndLastChar(String) METHOD +CompilationAction 1476277800604 Spreadsheet.java +EditAction 1476277938363 Spreadsheet.java 3101 11 26 0 +CompilationAction 1476277938623 Spreadsheet.java +CompilationAction 1476277938624 Spreadsheet.java +EditAction 1476277962813 Spreadsheet.java 3150 11 26 0 +CompilationAction 1476277962916 Spreadsheet.java +CompilationAction 1476277962916 Spreadsheet.java +EditAction 1476277980432 Spreadsheet.java 3151 11 29 0 +CompilationAction 1476277980687 Spreadsheet.java +CompilationAction 1476278005633 Spreadsheet.java +UnitTestCaseAction 1476278047247 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476278047247 SpreadsheetTest.java FAIL +EditAction 1476278077008 Spreadsheet.java 3179 11 29 0 +UnitTestCaseAction 1476278081246 SpreadsheetTest.java OK +UnitTestSessionAction 1476278081246 SpreadsheetTest.java OK +RefactoringAction 1476278107574 SpreadsheetTest.java ADD void evaluateString_ FIELD +RefactoringAction 1476278111086 SpreadsheetTest.java RENAME evaluateString_=>void evaluateString_Too FIELD +RefactoringAction 1476278118598 SpreadsheetTest.java RENAME evaluateString_Too=>void evaluateString_TooManyStr FIELD +RefactoringAction 1476278120109 SpreadsheetTest.java RENAME evaluateString_TooManyStr=>void evaluateString_TooManyStrMarks FIELD +RefactoringAction 1476278127122 SpreadsheetTest.java RENAME evaluateString_TooManyStrMarks=>void evaluateString_TooManyStrMarks() METHOD +EditAction 1476278213264 SpreadsheetTest.java 1547 6 16 5 +EditAction 1476278274348 SpreadsheetTest.java 1692 6 15 5 +CompilationAction 1476278274604 SpreadsheetTest.java +CompilationAction 1476278274604 SpreadsheetTest.java +CompilationAction 1476278278300 SpreadsheetTest.java +CompilationAction 1476278278302 SpreadsheetTest.java +CompilationAction 1476278278453 SpreadsheetTest.java +CompilationAction 1476278278453 SpreadsheetTest.java +RefactoringAction 1476278348534 Spreadsheet.java ADD String STR_MARK_IN_T FIELD +RefactoringAction 1476278352050 Spreadsheet.java RENAME STR_MARK_IN_T=>String STR_MARK_IN_THE_MIDDLE_ERROR_MSG FIELD +RefactoringAction 1476278384637 Spreadsheet.java ADD void character() METHOD +RefactoringAction 1476278387152 Spreadsheet.java REMOVE character() METHOD +CompilationAction 1476278387741 Spreadsheet.java +CompilationAction 1476278387741 SpreadsheetTest.java +CompilationAction 1476278387741 SpreadsheetTest.java +CompilationAction 1476278400607 Spreadsheet.java +CompilationAction 1476278400788 SpreadsheetTest.java +CompilationAction 1476278400788 SpreadsheetTest.java +EditAction 1476278467859 SpreadsheetTest.java 1818 6 17 5 +CompilationAction 1476278468107 SpreadsheetTest.java +CompilationAction 1476278468108 SpreadsheetTest.java +CompilationAction 1476278472281 SpreadsheetTest.java +CompilationAction 1476278472442 SpreadsheetTest.java +CompilationAction 1476278472442 SpreadsheetTest.java +CompilationAction 1476278485291 SpreadsheetTest.java +CompilationAction 1476278485446 SpreadsheetTest.java +CompilationAction 1476278502191 SpreadsheetTest.java +EditAction 1476278530275 SpreadsheetTest.java 1820 6 18 5 +UnitTestCaseAction 1476278531726 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476278531727 SpreadsheetTest.java FAIL +UnitTestCaseAction 1476278705070 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476278705070 SpreadsheetTest.java FAIL +UnitTestCaseAction 1476278744486 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476278744487 SpreadsheetTest.java FAIL +UnitTestCaseAction 1476278922861 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476278922861 SpreadsheetTest.java FAIL +UnitTestCaseAction 1476278981035 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476278981035 SpreadsheetTest.java FAIL +EditAction 1476279016164 SpreadsheetTest.java 1872 6 18 5 +UnitTestCaseAction 1476279017362 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476279017363 SpreadsheetTest.java FAIL +EditAction 1476279058283 SpreadsheetTest.java 1899 6 19 5 +EditAction 1476279083744 SpreadsheetTest.java 1943 6 15 5 +CompilationAction 1476279084011 SpreadsheetTest.java +EditAction 1476279090364 SpreadsheetTest.java 1959 6 19 5 +UnitTestCaseAction 1476279098215 SpreadsheetTest.java OK +UnitTestSessionAction 1476279098216 SpreadsheetTest.java OK +EditAction 1476279109170 SpreadsheetTest.java 1907 6 19 5 +EditAction 1476279117900 SpreadsheetTest.java 1909 6 15 5 +CompilationAction 1476279118154 SpreadsheetTest.java +CompilationAction 1476279120651 SpreadsheetTest.java +UnitTestCaseAction 1476279122132 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476279122133 SpreadsheetTest.java FAIL +EditAction 1476279136025 SpreadsheetTest.java 1907 6 19 5 +UnitTestCaseAction 1476279180667 SpreadsheetTest.java OK +UnitTestSessionAction 1476279180667 SpreadsheetTest.java OK +UnitTestCaseAction 1476279198452 SpreadsheetTest.java OK +UnitTestSessionAction 1476279198452 SpreadsheetTest.java OK +RefactoringAction 1476279249045 SpreadsheetTest.java ADD void dete FIELD +RefactoringAction 1476279250557 SpreadsheetTest.java RENAME dete=>void detect FIELD +RefactoringAction 1476279254570 SpreadsheetTest.java RENAME detect=>void detectStringIncorrectFomr FIELD +RefactoringAction 1476279256583 SpreadsheetTest.java RENAME detectStringIncorrectFomr=>void detectStringIncorrectFormatting FIELD +RefactoringAction 1476279260095 SpreadsheetTest.java RENAME detectStringIncorrectFormatting=>void detectStringIncorrectFormatting() METHOD +EditAction 1476279284473 SpreadsheetTest.java 2007 7 20 5 +EditAction 1476279293836 SpreadsheetTest.java 2006 7 20 5 +EditAction 1476279337902 SpreadsheetTest.java 2073 7 19 5 +CompilationAction 1476279338124 SpreadsheetTest.java +EditAction 1476279354817 SpreadsheetTest.java 2109 7 21 6 +CompilationAction 1476279354918 SpreadsheetTest.java +CompilationAction 1476279358921 SpreadsheetTest.java +CompilationAction 1476279359097 SpreadsheetTest.java +CompilationAction 1476279370277 SpreadsheetTest.java +UnitTestCaseAction 1476279373373 SpreadsheetTest.java OK +UnitTestSessionAction 1476279373374 SpreadsheetTest.java OK +RefactoringAction 1476279703936 SpreadsheetTest.java ADD void formula FIELD +RefactoringAction 1476279711949 SpreadsheetTest.java RENAME formula=>void formulaTest FIELD +RefactoringAction 1476279716460 SpreadsheetTest.java RENAME formulaTest=>void formulaTestCorrect FIELD +RefactoringAction 1476279717972 SpreadsheetTest.java RENAME formulaTestCorrect=>void formulaTestCorrectString FIELD +RefactoringAction 1476279719484 SpreadsheetTest.java RENAME formulaTestCorrectString=>void formulaTestCorrectString() METHOD +EditAction 1476279770617 SpreadsheetTest.java 2235 8 22 6 +EditAction 1476279865772 SpreadsheetTest.java 2360 8 23 7 +CompilationAction 1476279866039 SpreadsheetTest.java +CompilationAction 1476279875396 SpreadsheetTest.java +UnitTestCaseAction 1476279877815 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476279877815 SpreadsheetTest.java FAIL +CompilationAction 1476279946334 Spreadsheet.java +CompilationAction 1476279946335 Spreadsheet.java +RefactoringAction 1476279961520 Spreadsheet.java ADD boolean isFormulaExpression FIELD +RefactoringAction 1476279963531 Spreadsheet.java RENAME isFormulaExpression=>boolean isFormulaExpression() METHOD +CompilationAction 1476279977184 Spreadsheet.java +CompilationAction 1476279977185 Spreadsheet.java +CompilationAction 1476279977353 Spreadsheet.java +CompilationAction 1476279977354 Spreadsheet.java +CompilationAction 1476279977354 Spreadsheet.java +CompilationAction 1476279980979 Spreadsheet.java +CompilationAction 1476279981141 Spreadsheet.java +CompilationAction 1476279981142 Spreadsheet.java +CompilationAction 1476279981143 Spreadsheet.java +RefactoringAction 1476279986095 Spreadsheet.java RENAME containsFormulaExpression()=>boolean containsFormulaExpression(String) METHOD +CompilationAction 1476279989730 Spreadsheet.java +CompilationAction 1476279989879 Spreadsheet.java +CompilationAction 1476279989880 Spreadsheet.java +CompilationAction 1476280028108 Spreadsheet.java +CompilationAction 1476280028109 Spreadsheet.java +CompilationAction 1476280035745 Spreadsheet.java +CompilationAction 1476280035936 Spreadsheet.java +RefactoringAction 1476280063919 Spreadsheet.java ADD String processFormula() METHOD +RefactoringAction 1476280075955 Spreadsheet.java RENAME processFormula()=>String processFormula(String) METHOD +UnitTestCaseAction 1476280158293 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476280158293 SpreadsheetTest.java FAIL +UnitTestCaseAction 1476280383769 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476280383770 SpreadsheetTest.java FAIL +RefactoringAction 1476280564981 Spreadsheet.java ADD void evaluateCell() METHOD +RefactoringAction 1476280577012 Spreadsheet.java ADD void evaluateValue() METHOD +CompilationAction 1476280609661 Spreadsheet.java +CompilationAction 1476280609662 Spreadsheet.java +CompilationAction 1476280609662 Spreadsheet.java +CompilationAction 1476280609662 Spreadsheet.java +CompilationAction 1476280635588 Spreadsheet.java +CompilationAction 1476280635763 Spreadsheet.java +CompilationAction 1476280635764 Spreadsheet.java +CompilationAction 1476280635765 Spreadsheet.java +CompilationAction 1476280644719 Spreadsheet.java +CompilationAction 1476280644719 Spreadsheet.java +RefactoringAction 1476280659282 Spreadsheet.java RENAME evaluateCell()=>String evaluateCell(String) METHOD +CompilationAction 1476280659410 Spreadsheet.java +CompilationAction 1476280659592 Spreadsheet.java +CompilationAction 1476280678942 Spreadsheet.java +UnitTestCaseAction 1476280680394 SpreadsheetTest.java FAIL +UnitTestSessionAction 1476280680394 SpreadsheetTest.java FAIL +RefactoringAction 1476280749879 Spreadsheet.java ADD String evaluation FIELD +RefactoringAction 1476280751396 Spreadsheet.java RENAME evaluation=>String evaluation() METHOD +RefactoringAction 1476280789520 Spreadsheet.java RENAME evaluation()=>String evaluation(String) METHOD +CompilationAction 1476280791751 Spreadsheet.java +CompilationAction 1476280807520 Spreadsheet.java +CompilationAction 1476280807692 Spreadsheet.java +CompilationAction 1476280832017 Spreadsheet.java +CompilationAction 1476280832168 Spreadsheet.java +CompilationAction 1476280839284 Spreadsheet.java +UnitTestCaseAction 1476280842261 SpreadsheetTest.java OK +UnitTestSessionAction 1476280842261 SpreadsheetTest.java OK +UnitTestCaseAction 1476281016390 SpreadsheetTest.java OK +UnitTestSessionAction 1476281016391 SpreadsheetTest.java OK diff --git a/.besouro/20161012152902644/besouroEpisodes.txt b/.besouro/20161012152902644/besouroEpisodes.txt new file mode 100644 index 0000000..3274eed --- /dev/null +++ b/.besouro/20161012152902644/besouroEpisodes.txt @@ -0,0 +1,956 @@ +1476275744044 test-addition 1 401 true +1476275779118 regression 2 24 true +1476275783928 regression 1 1 true +1476278081246 test-first 1 2150 true +1476278081247 test-first 1 2150 true +1476278081248 test-first 1 2150 true +1476278081249 test-first 1 2150 true +1476278081250 test-first 1 2150 true +1476278081251 test-first 1 2150 true +1476278081252 test-first 1 2150 true +1476278081253 test-first 1 2150 true +1476278081254 test-first 1 2150 true +1476278081255 test-first 1 2150 true +1476278081256 test-first 1 2150 true +1476278081257 test-first 1 2150 true +1476278081258 test-first 1 2150 true +1476278081259 test-first 1 2150 true +1476278081260 test-first 1 2150 true +1476278081261 test-first 1 2150 true +1476278081262 test-first 1 2150 true +1476278081263 test-first 1 2150 true +1476278081264 test-first 1 2150 true +1476278081265 test-first 1 2150 true +1476278081266 test-first 1 2150 true +1476278081267 test-first 1 2150 true +1476278081268 test-first 1 2150 true +1476278081269 test-first 1 2150 true +1476278081270 test-first 1 2150 true +1476278081271 test-first 1 2150 true +1476278081272 test-first 1 2150 true +1476278081273 test-first 1 2150 true +1476278081274 test-first 1 2150 true +1476278081275 test-first 1 2150 true +1476278081276 test-first 1 2150 true +1476278081277 test-first 1 2150 true +1476278081278 test-first 1 2150 true +1476278081279 test-first 1 2150 true +1476278081280 test-first 1 2150 true +1476278081281 test-first 1 2150 true +1476278081282 test-first 1 2150 true +1476278081283 test-first 1 2150 true +1476278081284 test-first 1 2150 true +1476278081285 test-first 1 2150 true +1476278081286 test-first 1 2150 true +1476278081287 test-first 1 2150 true +1476278081288 test-first 1 2150 true +1476278081289 test-first 1 2150 true +1476278081290 test-first 1 2150 true +1476278081291 test-first 1 2150 true +1476278081292 test-first 1 2150 true +1476278081293 test-first 1 2150 true +1476278081294 test-first 1 2150 true +1476278081295 test-first 1 2150 true +1476278081296 test-first 1 2150 true +1476278081297 test-first 1 2150 true +1476278081298 test-first 1 2150 true +1476278081299 test-first 1 2150 true +1476278081300 test-first 1 2150 true +1476278081301 test-first 1 2150 true +1476278081302 test-first 1 2150 true +1476278081303 test-first 1 2150 true +1476278081304 test-first 1 2150 true +1476278081305 test-first 1 2150 true +1476278081306 test-first 1 2150 true +1476278081307 test-first 1 2150 true +1476278081308 test-first 1 2150 true +1476278081309 test-first 1 2150 true +1476278081310 test-first 1 2150 true +1476278081311 test-first 1 2150 true +1476278081312 test-first 1 2150 true +1476278081313 test-first 1 2150 true +1476278081314 test-first 1 2150 true +1476278081315 test-first 1 2150 true +1476278081316 test-first 1 2150 true +1476278081317 test-first 1 2150 true +1476278081318 test-first 1 2150 true +1476278081319 test-first 1 2150 true +1476278081320 test-first 1 2150 true +1476278081321 test-first 1 2150 true +1476278081322 test-first 1 2150 true +1476278081323 test-first 1 2150 true +1476278081324 test-first 1 2150 true +1476278081325 test-first 1 2150 true +1476278081326 test-first 1 2150 true +1476278081327 test-first 1 2150 true +1476278081328 test-first 1 2150 true +1476278081329 test-first 1 2150 true +1476278081330 test-first 1 2150 true +1476278081331 test-first 1 2150 true +1476278081332 test-first 1 2150 true +1476278081333 test-first 1 2150 true +1476278081334 test-first 1 2150 true +1476278081335 test-first 1 2150 true +1476278081336 test-first 1 2150 true +1476278081337 test-first 1 2150 true +1476278081338 test-first 1 2150 true +1476278081339 test-first 1 2150 true +1476278081340 test-first 1 2150 true +1476278081341 test-first 1 2150 true +1476278081342 test-first 1 2150 true +1476278081343 test-first 1 2150 true +1476278081344 test-first 1 2150 true +1476278081345 test-first 1 2150 true +1476278081346 test-first 1 2150 true +1476278081347 test-first 1 2150 true +1476278081348 test-first 1 2150 true +1476278081349 test-first 1 2150 true +1476278081350 test-first 1 2150 true +1476278081351 test-first 1 2150 true +1476278081352 test-first 1 2150 true +1476278081353 test-first 1 2150 true +1476278081354 test-first 1 2150 true +1476278081355 test-first 1 2150 true +1476278081356 test-first 1 2150 true +1476278081357 test-first 1 2150 true +1476278081358 test-first 1 2150 true +1476278081359 test-first 1 2150 true +1476278081360 test-first 1 2150 true +1476278081361 test-first 1 2150 true +1476278081362 test-first 1 2150 true +1476278081363 test-first 1 2150 true +1476278081364 test-first 1 2150 true +1476278081365 test-first 1 2150 true +1476278081366 test-first 1 2150 true +1476278081367 test-first 1 2150 true +1476278081368 test-first 1 2150 true +1476278081369 test-first 1 2150 true +1476278081370 test-first 1 2150 true +1476278081371 test-first 1 2150 true +1476278081372 test-first 1 2150 true +1476278081373 test-first 1 2150 true +1476278081374 test-first 1 2150 true +1476278081375 test-first 1 2150 true +1476278081376 test-first 1 2150 true +1476278081377 test-first 1 2150 true +1476278081378 test-first 1 2150 true +1476278081379 test-first 1 2150 true +1476278081380 test-first 1 2150 true +1476278081381 test-first 1 2150 true +1476278081382 test-first 1 2150 true +1476278081383 test-first 1 2150 true +1476278081384 test-first 1 2150 true +1476278081385 test-first 1 2150 true +1476278081386 test-first 1 2150 true +1476278081387 test-first 1 2150 true +1476278081388 test-first 1 2150 true +1476278081389 test-first 1 2150 true +1476278081390 test-first 1 2150 true +1476278081391 test-first 1 2150 true +1476278081392 test-first 1 2150 true +1476278081393 test-first 1 2150 true +1476278081394 test-first 1 2150 true +1476278081395 test-first 1 2150 true +1476278081396 test-first 1 2150 true +1476278081397 test-first 1 2150 true +1476278081398 test-first 1 2150 true +1476278081399 test-first 1 2150 true +1476278081400 test-first 1 2150 true +1476278081401 test-first 1 2150 true +1476278081402 test-first 1 2150 true +1476278081403 test-first 1 2150 true +1476278081404 test-first 1 2150 true +1476278081405 test-first 1 2150 true +1476278081406 test-first 1 2150 true +1476278081407 test-first 1 2150 true +1476278081408 test-first 1 2150 true +1476278081409 test-first 1 2150 true +1476278081410 test-first 1 2150 true +1476278081411 test-first 1 2150 true +1476278081412 test-first 1 2150 true +1476278081413 test-first 1 2150 true +1476278081414 test-first 1 2150 true +1476278081415 test-first 1 2150 true +1476278081416 test-first 1 2150 true +1476278081417 test-first 1 2150 true +1476278081418 test-first 1 2150 true +1476278081419 test-first 1 2150 true +1476278081420 test-first 1 2150 true +1476278081421 test-first 1 2150 true +1476278081422 test-first 1 2150 true +1476278081423 test-first 1 2150 true +1476278081424 test-first 1 2150 true +1476278081425 test-first 1 2150 true +1476278081426 test-first 1 2150 true +1476278081427 test-first 1 2150 true +1476278081428 test-first 1 2150 true +1476278081429 test-first 1 2150 true +1476278081430 test-first 1 2150 true +1476278081431 test-first 1 2150 true +1476278081432 test-first 1 2150 true +1476278081433 test-first 1 2150 true +1476278081434 test-first 1 2150 true +1476278081435 test-first 1 2150 true +1476278081436 test-first 1 2150 true +1476278081437 test-first 1 2150 true +1476278081438 test-first 1 2150 true +1476278081439 test-first 1 2150 true +1476278081440 test-first 1 2150 true +1476278081441 test-first 1 2150 true +1476278081442 test-first 1 2150 true +1476278081443 test-first 1 2150 true +1476278081444 test-first 1 2150 true +1476278081445 test-first 1 2150 true +1476278081446 test-first 1 2150 true +1476278081447 test-first 1 2150 true +1476278081448 test-first 1 2150 true +1476278081449 test-first 1 2150 true +1476278081450 test-first 1 2150 true +1476278081451 test-first 1 2150 true +1476278081452 test-first 1 2150 true +1476278081453 test-first 1 2150 true +1476278081454 test-first 1 2150 true +1476278081455 test-first 1 2150 true +1476278081456 test-first 1 2150 true +1476278081457 test-first 1 2150 true +1476278081458 test-first 1 2150 true +1476278081459 test-first 1 2150 true +1476278081460 test-first 1 2150 true +1476278081461 test-first 1 2150 true +1476278081462 test-first 1 2150 true +1476278081463 test-first 1 2150 true +1476278081464 test-first 1 2150 true +1476278081465 test-first 1 2150 true +1476278081466 test-first 1 2150 true +1476278081467 test-first 1 2150 true +1476278081468 test-first 1 2150 true +1476278081469 test-first 1 2150 true +1476278081470 test-first 1 2150 true +1476278081471 test-first 1 2150 true +1476278081472 test-first 1 2150 true +1476278081473 test-first 1 2150 true +1476278081474 test-first 1 2150 true +1476278081475 test-first 1 2150 true +1476278081476 test-first 1 2150 true +1476278081477 test-first 1 2150 true +1476278081478 test-first 1 2150 true +1476278081479 test-first 1 2150 true +1476278081480 test-first 1 2150 true +1476278081481 test-first 1 2150 true +1476278081482 test-first 1 2150 true +1476278081483 test-first 1 2150 true +1476278081484 test-first 1 2150 true +1476278081485 test-first 1 2150 true +1476278081486 test-first 1 2150 true +1476278081487 test-first 1 2150 true +1476278081488 test-first 1 2150 true +1476278081489 test-first 1 2150 true +1476278081490 test-first 1 2150 true +1476278081491 test-first 1 2150 true +1476278081492 test-first 1 2150 true +1476278081493 test-first 1 2150 true +1476278081494 test-first 1 2150 true +1476278081495 test-first 1 2150 true +1476278081496 test-first 1 2150 true +1476278081497 test-first 1 2150 true +1476278081498 test-first 1 2150 true +1476278081499 test-first 1 2150 true +1476278081500 test-first 1 2150 true +1476278081501 test-first 1 2150 true +1476278081502 test-first 1 2150 true +1476278081503 test-first 1 2150 true +1476278081504 test-first 1 2150 true +1476278081505 test-first 1 2150 true +1476278081506 test-first 1 2150 true +1476278081507 test-first 1 2150 true +1476278081508 test-first 1 2150 true +1476278081509 test-first 1 2150 true +1476278081510 test-first 1 2150 true +1476278081511 test-first 1 2150 true +1476278081512 test-first 1 2150 true +1476278081513 test-first 1 2150 true +1476278081514 test-first 1 2150 true +1476278081515 test-first 1 2150 true +1476278081516 test-first 1 2150 true +1476278081517 test-first 1 2150 true +1476278081518 test-first 1 2150 true +1476278081519 test-first 1 2150 true +1476278081520 test-first 1 2150 true +1476278081521 test-first 1 2150 true +1476278081522 test-first 1 2150 true +1476278081523 test-first 1 2150 true +1476278081524 test-first 1 2150 true +1476278081525 test-first 1 2150 true +1476278081526 test-first 1 2150 true +1476278081527 test-first 1 2150 true +1476278081528 test-first 1 2150 true +1476278081529 test-first 1 2150 true +1476278081530 test-first 1 2150 true +1476278081531 test-first 1 2150 true +1476278081532 test-first 1 2150 true +1476278081533 test-first 1 2150 true +1476278081534 test-first 1 2150 true +1476278081535 test-first 1 2150 true +1476278081536 test-first 1 2150 true +1476278081537 test-first 1 2150 true +1476278081538 test-first 1 2150 true +1476278081539 test-first 1 2150 true +1476278081540 test-first 1 2150 true +1476278081541 test-first 1 2150 true +1476278081542 test-first 1 2150 true +1476278081543 test-first 1 2150 true +1476278081544 test-first 1 2150 true +1476278081545 test-first 1 2150 true +1476278081546 test-first 1 2150 true +1476278081547 test-first 1 2150 true +1476278081548 test-first 1 2150 true +1476278081549 test-first 1 2150 true +1476278081550 test-first 1 2150 true +1476278081551 test-first 1 2150 true +1476278081552 test-first 1 2150 true +1476278081553 test-first 1 2150 true +1476278081554 test-first 1 2150 true +1476278081555 test-first 1 2150 true +1476278081556 test-first 1 2150 true +1476278081557 test-first 1 2150 true +1476278081558 test-first 1 2150 true +1476278081559 test-first 1 2150 true +1476278081560 test-first 1 2150 true +1476278081561 test-first 1 2150 true +1476278081562 test-first 1 2150 true +1476278081563 test-first 1 2150 true +1476278081564 test-first 1 2150 true +1476278081565 test-first 1 2150 true +1476278081566 test-first 1 2150 true +1476278081567 test-first 1 2150 true +1476278081568 test-first 1 2150 true +1476278081569 test-first 1 2150 true +1476278081570 test-first 1 2150 true +1476278081571 test-first 1 2150 true +1476278081572 test-first 1 2150 true +1476278081573 test-first 1 2150 true +1476278081574 test-first 1 2150 true +1476278081575 test-first 1 2150 true +1476278081576 test-first 1 2150 true +1476278081577 test-first 1 2150 true +1476278081578 test-first 1 2150 true +1476278081579 test-first 1 2150 true +1476278081580 test-first 1 2150 true +1476278081581 test-first 1 2150 true +1476278081582 test-first 1 2150 true +1476278081583 test-first 1 2150 true +1476278081584 test-first 1 2150 true +1476278081585 test-first 1 2150 true +1476278081586 test-first 1 2150 true +1476278081587 test-first 1 2150 true +1476278081588 test-first 1 2150 true +1476278081589 test-first 1 2150 true +1476278081590 test-first 1 2150 true +1476278081591 test-first 1 2150 true +1476278081592 test-first 1 2150 true +1476278081593 test-first 1 2150 true +1476278081594 test-first 1 2150 true +1476278081595 test-first 1 2150 true +1476278081596 test-first 1 2150 true +1476278081597 test-first 1 2150 true +1476278081598 test-first 1 2150 true +1476278081599 test-first 1 2150 true +1476278081600 test-first 1 2150 true +1476278081601 test-first 1 2150 true +1476278081602 test-first 1 2150 true +1476278081603 test-first 1 2150 true +1476278081604 test-first 1 2150 true +1476278081605 test-first 1 2150 true +1476278081606 test-first 1 2150 true +1476278081607 test-first 1 2150 true +1476278081608 test-first 1 2150 true +1476278081609 test-first 1 2150 true +1476278081610 test-first 1 2150 true +1476278081611 test-first 1 2150 true +1476278081612 test-first 1 2150 true +1476278081613 test-first 1 2150 true +1476278081614 test-first 1 2150 true +1476278081615 test-first 1 2150 true +1476278081616 test-first 1 2150 true +1476278081617 test-first 1 2150 true +1476278081618 test-first 1 2150 true +1476278081619 test-first 1 2150 true +1476278081620 test-first 1 2150 true +1476278081621 test-first 1 2150 true +1476278081622 test-first 1 2150 true +1476278081623 test-first 1 2150 true +1476278081624 test-first 1 2150 true +1476278081625 test-first 1 2150 true +1476278081626 test-first 1 2150 true +1476278081627 test-first 1 2150 true +1476278081628 test-first 1 2150 true +1476278081629 test-first 1 2150 true +1476278081630 test-first 1 2150 true +1476278081631 test-first 1 2150 true +1476278081632 test-first 1 2150 true +1476278081633 test-first 1 2150 true +1476278081634 test-first 1 2150 true +1476278081635 test-first 1 2150 true +1476278081636 test-first 1 2150 true +1476278081637 test-first 1 2150 true +1476278081638 test-first 1 2150 true +1476278081639 test-first 1 2150 true +1476278081640 test-first 1 2150 true +1476278081641 test-first 1 2150 true +1476278081642 test-first 1 2150 true +1476278081643 test-first 1 2150 true +1476278081644 test-first 1 2150 true +1476278081645 test-first 1 2150 true +1476278081646 test-first 1 2150 true +1476278081647 test-first 1 2150 true +1476278081648 test-first 1 2150 true +1476278081649 test-first 1 2150 true +1476278081650 test-first 1 2150 true +1476278081651 test-first 1 2150 true +1476278081652 test-first 1 2150 true +1476278081653 test-first 1 2150 true +1476278081654 test-first 1 2150 true +1476278081655 test-first 1 2150 true +1476278081656 test-first 1 2150 true +1476278081657 test-first 1 2150 true +1476278081658 test-first 1 2150 true +1476278081659 test-first 1 2150 true +1476278081660 test-first 1 2150 true +1476278081661 test-first 1 2150 true +1476278081662 test-first 1 2150 true +1476278081663 test-first 1 2150 true +1476278081664 test-first 1 2150 true +1476278081665 test-first 1 2150 true +1476278081666 test-first 1 2150 true +1476278081667 test-first 1 2150 true +1476278081668 test-first 1 2150 true +1476278081669 test-first 1 2150 true +1476278081670 test-first 1 2150 true +1476278081671 test-first 1 2150 true +1476278081672 test-first 1 2150 true +1476278081673 test-first 1 2150 true +1476278081674 test-first 1 2150 true +1476278081675 test-first 1 2150 true +1476278081676 test-first 1 2150 true +1476278081677 test-first 1 2150 true +1476278081678 test-first 1 2150 true +1476278081679 test-first 1 2150 true +1476278081680 test-first 1 2150 true +1476278081681 test-first 1 2150 true +1476278081682 test-first 1 2150 true +1476278081683 test-first 1 2150 true +1476278081684 test-first 1 2150 true +1476278081685 test-first 1 2150 true +1476278081686 test-first 1 2150 true +1476278081687 test-first 1 2150 true +1476278081688 test-first 1 2150 true +1476278081689 test-first 1 2150 true +1476278081690 test-first 1 2150 true +1476278081691 test-first 1 2150 true +1476278081692 test-first 1 2150 true +1476278081693 test-first 1 2150 true +1476278081694 test-first 1 2150 true +1476278081695 test-first 1 2150 true +1476278081696 test-first 1 2150 true +1476278081697 test-first 1 2150 true +1476278081698 test-first 1 2150 true +1476278081699 test-first 1 2150 true +1476278081700 test-first 1 2150 true +1476278081701 test-first 1 2150 true +1476278081702 test-first 1 2150 true +1476278081703 test-first 1 2150 true +1476278081704 test-first 1 2150 true +1476278081705 test-first 1 2150 true +1476278081706 test-first 1 2150 true +1476278081707 test-first 1 2150 true +1476278081708 test-first 1 2150 true +1476278081709 test-first 1 2150 true +1476278081710 test-first 1 2150 true +1476278081711 test-first 1 2150 true +1476278081712 test-first 1 2150 true +1476278081713 test-first 1 2150 true +1476278081714 test-first 1 2150 true +1476278081715 test-first 1 2150 true +1476278081716 test-first 1 2150 true +1476278081717 test-first 1 2150 true +1476278081718 test-first 1 2150 true +1476278081719 test-first 1 2150 true +1476278081720 test-first 1 2150 true +1476278081721 test-first 1 2150 true +1476278081722 test-first 1 2150 true +1476278081723 test-first 1 2150 true +1476278081724 test-first 1 2150 true +1476278081725 test-first 1 2150 true +1476278081726 test-first 1 2150 true +1476278081727 test-first 1 2150 true +1476278081728 test-first 1 2150 true +1476278081729 test-first 1 2150 true +1476278081730 test-first 1 2150 true +1476278081731 test-first 1 2150 true +1476278081732 test-first 1 2150 true +1476278081733 test-first 1 2150 true +1476278081734 test-first 1 2150 true +1476278081735 test-first 1 2150 true +1476278081736 test-first 1 2150 true +1476278081737 test-first 1 2150 true +1476278081738 test-first 1 2150 true +1476278081739 test-first 1 2150 true +1476278081740 test-first 1 2150 true +1476278081741 test-first 1 2150 true +1476278081742 test-first 1 2150 true +1476278081743 test-first 1 2150 true +1476278081744 test-first 1 2150 true +1476278081745 test-first 1 2150 true +1476278081746 test-first 1 2150 true +1476278081747 test-first 1 2150 true +1476278081748 test-first 1 2150 true +1476278081749 test-first 1 2150 true +1476278081750 test-first 1 2150 true +1476278081751 test-first 1 2150 true +1476278081752 test-first 1 2150 true +1476278081753 test-first 1 2150 true +1476278081754 test-first 1 2150 true +1476278081755 test-first 1 2150 true +1476278081756 test-first 1 2150 true +1476278081757 test-first 1 2150 true +1476278081758 test-first 1 2150 true +1476278081759 test-first 1 2150 true +1476278081760 test-first 1 2150 true +1476278081761 test-first 1 2150 true +1476278081762 test-first 1 2150 true +1476278081763 test-first 1 2150 true +1476278081764 test-first 1 2150 true +1476278081765 test-first 1 2150 true +1476278081766 test-first 1 2150 true +1476278081767 test-first 1 2150 true +1476278081768 test-first 1 2150 true +1476278081769 test-first 1 2150 true +1476278081770 test-first 1 2150 true +1476278081771 test-first 1 2150 true +1476278081772 test-first 1 2150 true +1476278081773 test-first 1 2150 true +1476278081774 test-first 1 2150 true +1476278081775 test-first 1 2150 true +1476278081776 test-first 1 2150 true +1476278081777 test-first 1 2150 true +1476278081778 test-first 1 2150 true +1476278081779 test-first 1 2150 true +1476278081780 test-first 1 2150 true +1476278081781 test-first 1 2150 true +1476278081782 test-first 1 2150 true +1476278081783 test-first 1 2150 true +1476278081784 test-first 1 2150 true +1476278081785 test-first 1 2150 true +1476278081786 test-first 1 2150 true +1476278081787 test-first 1 2150 true +1476278081788 test-first 1 2150 true +1476278081789 test-first 1 2150 true +1476278081790 test-first 1 2150 true +1476278081791 test-first 1 2150 true +1476278081792 test-first 1 2150 true +1476278081793 test-first 1 2150 true +1476278081794 test-first 1 2150 true +1476278081795 test-first 1 2150 true +1476278081796 test-first 1 2150 true +1476278081797 test-first 1 2150 true +1476278081798 test-first 1 2150 true +1476278081799 test-first 1 2150 true +1476278081800 test-first 1 2150 true +1476278081801 test-first 1 2150 true +1476278081802 test-first 1 2150 true +1476278081803 test-first 1 2150 true +1476278081804 test-first 1 2150 true +1476278081805 test-first 1 2150 true +1476278081806 test-first 1 2150 true +1476278081807 test-first 1 2150 true +1476278081808 test-first 1 2150 true +1476278081809 test-first 1 2150 true +1476278081810 test-first 1 2150 true +1476278081811 test-first 1 2150 true +1476278081812 test-first 1 2150 true +1476278081813 test-first 1 2150 true +1476278081814 test-first 1 2150 true +1476278081815 test-first 1 2150 true +1476278081816 test-first 1 2150 true +1476278081817 test-first 1 2150 true +1476278081818 test-first 1 2150 true +1476278081819 test-first 1 2150 true +1476278081820 test-first 1 2150 true +1476278081821 test-first 1 2150 true +1476278081822 test-first 1 2150 true +1476278081823 test-first 1 2150 true +1476278081824 test-first 1 2150 true +1476278081825 test-first 1 2150 true +1476278081826 test-first 1 2150 true +1476278081827 test-first 1 2150 true +1476278081828 test-first 1 2150 true +1476278081829 test-first 1 2150 true +1476278081830 test-first 1 2150 true +1476278081831 test-first 1 2150 true +1476278081832 test-first 1 2150 true +1476278081833 test-first 1 2150 true +1476278081834 test-first 1 2150 true +1476278081835 test-first 1 2150 true +1476278081836 test-first 1 2150 true +1476278081837 test-first 1 2150 true +1476278081838 test-first 1 2150 true +1476278081839 test-first 1 2150 true +1476278081840 test-first 1 2150 true +1476278081841 test-first 1 2150 true +1476278081842 test-first 1 2150 true +1476278081843 test-first 1 2150 true +1476278081844 test-first 1 2150 true +1476278081845 test-first 1 2150 true +1476278081846 test-first 1 2150 true +1476278081847 test-first 1 2150 true +1476278081848 test-first 1 2150 true +1476278081849 test-first 1 2150 true +1476278081850 test-first 1 2150 true +1476278081851 test-first 1 2150 true +1476278081852 test-first 1 2150 true +1476278081853 test-first 1 2150 true +1476278081854 test-first 1 2150 true +1476278081855 test-first 1 2150 true +1476278081856 test-first 1 2150 true +1476278081857 test-first 1 2150 true +1476278081858 test-first 1 2150 true +1476278081859 test-first 1 2150 true +1476278081860 test-first 1 2150 true +1476278081861 test-first 1 2150 true +1476278081862 test-first 1 2150 true +1476278081863 test-first 1 2150 true +1476278081864 test-first 1 2150 true +1476278081865 test-first 1 2150 true +1476278081866 test-first 1 2150 true +1476278081867 test-first 1 2150 true +1476278081868 test-first 1 2150 true +1476278081869 test-first 1 2150 true +1476278081870 test-first 1 2150 true +1476278081871 test-first 1 2150 true +1476278081872 test-first 1 2150 true +1476278081873 test-first 1 2150 true +1476278081874 test-first 1 2150 true +1476278081875 test-first 1 2150 true +1476278081876 test-first 1 2150 true +1476278081877 test-first 1 2150 true +1476278081878 test-first 1 2150 true +1476278081879 test-first 1 2150 true +1476278081880 test-first 1 2150 true +1476278081881 test-first 1 2150 true +1476278081882 test-first 1 2150 true +1476278081883 test-first 1 2150 true +1476278081884 test-first 1 2150 true +1476278081885 test-first 1 2150 true +1476278081886 test-first 1 2150 true +1476278081887 test-last 1 2150 false +1476278081888 test-first 1 2150 true +1476278081889 test-last 1 2150 false +1476278081890 test-first 1 2150 true +1476278081891 test-last 1 2150 false +1476278081892 test-first 1 2150 true +1476278081893 test-last 1 2150 false +1476278081894 test-first 1 2150 true +1476278081895 test-last 1 2150 false +1476278081896 test-first 1 2150 true +1476278081897 test-last 1 2150 false +1476278081898 test-first 1 2150 true +1476278081899 test-last 1 2150 false +1476278081900 test-first 1 2150 true +1476278081901 test-last 1 2150 false +1476278081902 test-first 1 2150 true +1476278081903 test-last 1 2150 false +1476278081904 test-first 1 2150 true +1476278081905 test-last 1 2150 false +1476278081906 test-first 1 2150 true +1476278081907 test-last 1 2150 false +1476278081908 test-first 1 2150 true +1476278081909 test-last 1 2150 false +1476278081910 test-first 1 2150 true +1476278081911 test-last 1 2150 false +1476278081912 test-first 1 2150 true +1476278081913 test-last 1 2150 false +1476278081914 test-first 1 2150 true +1476278081915 test-last 1 2150 false +1476278081916 test-first 1 2150 true +1476278081917 test-last 1 2150 false +1476278081918 test-first 1 2150 true +1476278081919 test-last 1 2150 false +1476278081920 test-first 1 2150 true +1476278081921 test-last 1 2150 false +1476278081922 test-first 1 2150 true +1476278081923 test-first 1 2150 true +1476278081924 test-first 1 2150 true +1476278081925 test-first 1 2150 true +1476278081926 test-first 1 2150 true +1476278081927 test-first 1 2150 true +1476278081928 test-first 1 2150 true +1476278081929 test-first 1 2150 true +1476278081930 test-first 1 2150 true +1476278081931 test-first 1 2150 true +1476278081932 test-first 1 2150 true +1476278081933 test-first 1 2150 true +1476278081934 test-first 1 2150 true +1476278081935 test-first 1 2150 true +1476278081936 test-first 1 2150 true +1476278081937 test-first 1 2150 true +1476278081938 test-first 1 2150 true +1476278081939 test-first 1 2150 true +1476278081940 test-first 1 2150 true +1476278081941 test-first 1 2150 true +1476278081942 test-first 1 2150 true +1476278081943 test-first 1 2150 true +1476278081944 test-first 1 2150 true +1476278081945 test-first 1 2150 true +1476278081946 test-first 1 2150 true +1476278081947 test-first 1 2150 true +1476278081948 test-first 1 2150 true +1476278081949 test-first 1 2150 true +1476278081950 test-first 1 2150 true +1476278081951 test-first 1 2150 true +1476278081952 test-first 1 2150 true +1476278081953 test-first 1 2150 true +1476278081954 test-first 1 2150 true +1476278081955 test-first 1 2150 true +1476278081956 test-first 1 2150 true +1476278081957 test-first 1 2150 true +1476278081958 test-first 1 2150 true +1476278081959 test-first 1 2150 true +1476278081960 test-first 1 2150 true +1476278081961 test-first 1 2150 true +1476278081962 test-first 1 2150 true +1476278081963 test-first 1 2150 true +1476278081964 test-first 1 2150 true +1476278081965 test-first 1 2150 true +1476278081966 test-first 1 2150 true +1476278081967 test-first 1 2150 true +1476278081968 test-first 1 2150 true +1476278081969 test-first 1 2150 true +1476278081970 test-first 1 2150 true +1476278081971 test-first 1 2150 true +1476278081972 test-first 1 2150 true +1476278081973 test-first 1 2150 true +1476278081974 test-first 1 2150 true +1476278081975 test-first 1 2150 true +1476278081976 test-first 1 2150 true +1476278081977 test-first 1 2150 true +1476278081978 test-first 1 2150 true +1476278081979 test-first 1 2150 true +1476278081980 test-first 1 2150 true +1476278081981 test-first 1 2150 true +1476278081982 test-first 1 2150 true +1476278081983 test-first 1 2150 true +1476278081984 test-first 1 2150 true +1476278081985 test-first 1 2150 true +1476278081986 test-first 1 2150 true +1476278081987 test-first 1 2150 true +1476278081988 test-first 1 2150 true +1476278081989 test-first 1 2150 true +1476278081990 test-first 1 2150 true +1476278081991 test-first 1 2150 true +1476278081992 test-first 1 2150 true +1476278081993 test-first 1 2150 true +1476278081994 test-first 1 2150 true +1476278081995 test-first 1 2150 true +1476278081996 test-first 1 2150 true +1476278081997 test-first 1 2150 true +1476278081998 test-first 1 2150 true +1476278081999 test-first 1 2150 true +1476278082000 test-first 1 2150 true +1476278082001 test-first 1 2150 true +1476278082002 test-first 1 2150 true +1476278082003 test-first 1 2150 true +1476278082004 test-first 1 2150 true +1476278082005 test-first 1 2150 true +1476278082006 test-first 1 2150 true +1476278082007 test-first 1 2150 true +1476278082008 test-first 1 2150 true +1476278082009 test-first 1 2150 true +1476278082010 test-first 1 2150 true +1476278082011 test-first 1 2150 true +1476278082012 test-first 1 2150 true +1476278082013 test-first 1 2150 true +1476278082014 test-first 1 2150 true +1476278082015 test-first 1 2150 true +1476278082016 test-first 1 2150 true +1476278082017 test-first 1 2150 true +1476278082018 test-first 1 2150 true +1476278082019 test-first 1 2150 true +1476278082020 test-first 1 2150 true +1476278082021 test-first 1 2150 true +1476278082022 test-first 1 2150 true +1476278082023 test-first 1 2150 true +1476278082024 test-first 1 2150 true +1476278082025 test-first 1 2150 true +1476278082026 test-first 1 2150 true +1476278082027 test-first 1 2150 true +1476278082028 test-first 1 2150 true +1476278082029 test-first 1 2150 true +1476278082030 test-first 1 2150 true +1476278082031 test-first 1 2150 true +1476278082032 test-first 1 2150 true +1476278082033 test-first 1 2150 true +1476278082034 test-first 1 2150 true +1476278082035 test-first 1 2150 true +1476278082036 test-first 1 2150 true +1476278082037 test-first 1 2150 true +1476278082038 test-first 1 2150 true +1476278082039 test-first 1 2150 true +1476278082040 test-first 1 2150 true +1476278082041 test-first 1 2150 true +1476278082042 test-first 1 2150 true +1476278082043 test-first 1 2150 true +1476278082044 test-first 1 2150 true +1476278082045 test-first 1 2150 true +1476278082046 test-first 1 2150 true +1476278082047 test-first 1 2150 true +1476278082048 test-first 1 2150 true +1476278082049 test-first 1 2150 true +1476278082050 test-first 1 2150 true +1476278082051 test-first 1 2150 true +1476278082052 test-first 1 2150 true +1476278082053 test-first 1 2150 true +1476278082054 test-first 1 2150 true +1476278082055 test-first 1 2150 true +1476278082056 test-first 1 2150 true +1476278082057 test-first 1 2150 true +1476278082058 test-first 1 2150 true +1476278082059 test-first 1 2150 true +1476278082060 test-first 1 2150 true +1476278082061 test-first 1 2150 true +1476278082062 test-first 1 2150 true +1476278082063 test-first 1 2150 true +1476278082064 test-first 1 2150 true +1476278082065 test-first 1 2150 true +1476278082066 test-first 1 2150 true +1476278082067 test-first 1 2150 true +1476278082068 test-first 1 2150 true +1476278082069 test-first 1 2150 true +1476278082070 test-first 1 2150 true +1476278082071 test-first 1 2150 true +1476278082072 test-first 1 2150 true +1476278082073 test-first 1 2150 true +1476279098216 refactoring 1A 990 true +1476279098217 refactoring 1A 990 true +1476279098218 refactoring 1A 990 true +1476279098219 refactoring 1A 990 true +1476279098220 refactoring 3 990 true +1476279098221 refactoring 3 990 true +1476279098222 refactoring 3 990 true +1476279098223 refactoring 3 990 true +1476279098224 refactoring 3 990 true +1476279098225 refactoring 3 990 true +1476279098226 refactoring 3 990 true +1476279098227 refactoring 3 990 true +1476279098228 refactoring 3 990 true +1476279098229 refactoring 3 990 true +1476279098230 refactoring 3 990 true +1476279098231 refactoring 3 990 true +1476279098232 refactoring 3 990 true +1476279098233 refactoring 3 990 true +1476279098234 refactoring 3 990 true +1476279098235 refactoring 1A 990 true +1476279098236 refactoring 3 990 true +1476279098237 refactoring 3 990 true +1476279098238 refactoring 3 990 true +1476279098239 refactoring 3 990 true +1476279098240 refactoring 3 990 true +1476279098241 refactoring 3 990 true +1476279098242 refactoring 3 990 true +1476279098243 refactoring 3 990 true +1476279098244 refactoring 3 990 true +1476279098245 refactoring 3 990 true +1476279098246 refactoring 3 990 true +1476279098247 refactoring 3 990 true +1476279098248 refactoring 3 990 true +1476279098249 refactoring 3 990 true +1476279098250 refactoring 3 990 true +1476279098251 refactoring 3 990 true +1476279098252 refactoring 3 990 true +1476279098253 refactoring 3 990 true +1476279098254 refactoring 3 990 true +1476279098255 refactoring 3 990 true +1476279098256 refactoring 3 990 true +1476279098257 refactoring 3 990 true +1476279098258 refactoring 3 990 true +1476279098259 refactoring 3 990 true +1476279098260 refactoring 3 990 true +1476279098261 refactoring 3 990 true +1476279098262 refactoring 3 990 true +1476279098263 refactoring 3 990 true +1476279098264 refactoring 3 990 true +1476279098265 refactoring 3 990 true +1476279098266 refactoring 3 990 true +1476279098267 refactoring 3 990 true +1476279098268 refactoring 3 990 true +1476279098269 refactoring 3 990 true +1476279098270 refactoring 3 990 true +1476279098271 refactoring 3 990 true +1476279098272 refactoring 3 990 true +1476279098273 refactoring 3 990 true +1476279098274 refactoring 3 990 true +1476279098275 refactoring 3 990 true +1476279098276 refactoring 3 990 true +1476279098277 refactoring 3 990 true +1476279098278 refactoring 3 990 true +1476279098279 refactoring 3 990 true +1476279098280 refactoring 3 990 true +1476279098281 refactoring 3 990 true +1476279098282 refactoring 3 990 true +1476279098283 refactoring 3 990 true +1476279098284 refactoring 3 990 true +1476279098285 refactoring 3 990 true +1476279098286 refactoring 3 990 true +1476279098287 refactoring 3 990 true +1476279098288 refactoring 3 990 true +1476279098289 refactoring 3 990 true +1476279098290 refactoring 3 990 true +1476279098291 refactoring 3 990 true +1476279098292 refactoring 3 990 true +1476279098293 refactoring 3 990 true +1476279098294 refactoring 1A 990 true +1476279098295 refactoring 1A 990 true +1476279098296 refactoring 3 990 true +1476279098297 refactoring 3 990 true +1476279098298 refactoring 3 990 true +1476279098299 refactoring 3 990 true +1476279098300 refactoring 3 990 true +1476279098301 refactoring 3 990 true +1476279098302 refactoring 3 990 true +1476279098303 refactoring 3 990 true +1476279098304 refactoring 3 990 true +1476279098305 refactoring 3 990 true +1476279098306 refactoring 3 990 true +1476279098307 refactoring 3 990 true +1476279098308 refactoring 3 990 true +1476279098309 refactoring 3 990 true +1476279098310 refactoring 3 990 true +1476279098311 refactoring 3 990 true +1476279098312 refactoring 3 990 true +1476279098313 refactoring 3 990 true +1476279098314 refactoring 3 990 true +1476279098315 refactoring 3 990 true +1476279098316 refactoring 3 990 true +1476279098317 refactoring 3 990 true +1476279098318 refactoring 3 990 true +1476279098319 refactoring 3 990 true +1476279098320 refactoring 3 990 true +1476279098321 refactoring 3 990 true +1476279098322 refactoring 3 990 true +1476279098323 refactoring 3 990 true +1476279098324 refactoring 3 990 true +1476279098325 refactoring 3 990 true +1476279098326 refactoring 3 990 true +1476279098327 refactoring 3 990 true +1476279098328 refactoring 3 990 true +1476279098329 refactoring 3 990 true +1476279098330 refactoring 3 990 true +1476279180667 refactoring 1A 71 true +1476279180668 refactoring 1A 71 true +1476279198452 regression 1 0 true +1476279373374 test-addition 1 124 true +1476280842261 test-addition 2 1138 true +1476280842262 test-addition 2 1138 true +1476280842263 test-addition 2 1138 true +1476280842264 test-addition 2 1138 true +1476280842265 test-addition 1 1138 true +1476281016391 regression 1 0 true diff --git a/.besouro/20161012152902644/disagreements.txt b/.besouro/20161012152902644/disagreements.txt new file mode 100644 index 0000000..e69de29 diff --git a/.besouro/20161012152902644/randomHeuristicEpisodes.txt b/.besouro/20161012152902644/randomHeuristicEpisodes.txt new file mode 100644 index 0000000..8b6b3e3 --- /dev/null +++ b/.besouro/20161012152902644/randomHeuristicEpisodes.txt @@ -0,0 +1,10 @@ +1476275744044 test-addition 1 401 true +1476275779118 regression 2 24 true +1476275783928 regression 1 1 true +1476278081246 test-first 1 2150 true +1476279098216 refactoring 1A 990 true +1476279180667 refactoring 1A 71 false +1476279198452 regression 1 0 false +1476279373374 test-addition 1 124 true +1476280842261 test-addition 2 1138 true +1476281016391 regression 1 0 false diff --git a/.besouro/20161012152902644/userComments.txt b/.besouro/20161012152902644/userComments.txt new file mode 100644 index 0000000..e69de29 diff --git a/.besouro/20161012152902644/zorroEpisodes.txt b/.besouro/20161012152902644/zorroEpisodes.txt new file mode 100644 index 0000000..c2b431d --- /dev/null +++ b/.besouro/20161012152902644/zorroEpisodes.txt @@ -0,0 +1,10 @@ +1476275744044 test-addition 1 401 true +1476275779118 regression 2 35 true +1476275783928 regression 1 4 true +1476278081246 test-first 1 2297 true +1476279098216 refactoring 1A 1016 true +1476279180667 refactoring 1A 82 true +1476279198452 regression 1 17 true +1476279373374 test-addition 1 174 true +1476280842261 test-addition 2 1468 true +1476281016391 regression 1 174 true diff --git a/bin/.gitignore b/bin/.gitignore new file mode 100644 index 0000000..89286d2 --- /dev/null +++ b/bin/.gitignore @@ -0,0 +1,3 @@ +/Spreadsheet.class +/SpreadsheetTest.class +/SpreadsheetException.class diff --git a/bin/Spreadsheet.class b/bin/Spreadsheet.class index 92b411f..923bbba 100644 Binary files a/bin/Spreadsheet.class and b/bin/Spreadsheet.class differ diff --git a/bin/SpreadsheetTest.class b/bin/SpreadsheetTest.class index e7086bd..52e115f 100644 Binary files a/bin/SpreadsheetTest.class and b/bin/SpreadsheetTest.class differ diff --git a/src/Spreadsheet.java b/src/Spreadsheet.java index e4f120b..fe04e19 100644 --- a/src/Spreadsheet.java +++ b/src/Spreadsheet.java @@ -1,18 +1,139 @@ +import java.util.Hashtable; public class Spreadsheet { + Hashtable cells; + + private String[] allowedIntegerChars = {"1","2","3","4","5","6","7","8","9","-" }; + public final String STR_MARK_IN_THE_MIDDLE_ERROR_MSG = + "String contains ' character(s) that is not at the beginning or end of string"; + public final String ERROR_MESSAGE = "#Error"; + public final boolean STR_MARKS_ALLOWED_INSIDE_STRING = false; + + public Spreadsheet() { + cells = new Hashtable(); + } - public String get(String cell) { - // to be implemented - return null; + public String get(String cell) throws SpreadsheetException{ + if (null == cell) + throw new SpreadsheetException("Non null string expected for cell identifier"); + + return cells.get(cell); } public void set(String cell, String value) { // to be implemented + cells.put(cell, value); } - public String evaluate(String cell) { - // to be implemented - return null; + public String evaluate(String cell) throws SpreadsheetException { + return evaluateCell(cell); + } + + private String evaluateCell(String cell) throws SpreadsheetException { + String rawVal = cells.get(cell); + System.out.println("rawVal == " + rawVal); + + return evaluation(rawVal); + } + + private String evaluateValue(String value) throws SpreadsheetException { + return evaluation(value); + } + + private String evaluation(String value) throws SpreadsheetException { + if (containsFormulaExpression(value)) + return evaluateValue(processFormula(value)); + + if (containsString(value)) + return evaluatedString(value); + + if (!containsAllowedIntegers(value)) + return ERROR_MESSAGE; + + return value; + } + + private boolean containsFormulaExpression(String value) throws SpreadsheetException { + if (charAsStringFromPos(value, 0).equals("=")) + return true; + return false; + } + + private String processFormula(String toProcess) { + return toProcess.substring(1); + } + + private boolean containsString(String value) throws SpreadsheetException { + if (!(charAsStringFromPos(value, 0).equals("'") && charAsStringFromPos(value, value.length() - 1).equals("'"))) + return false; + + if ( !STR_MARKS_ALLOWED_INSIDE_STRING) + if (2 == characterCount(value, "'")) + return true; + + throw new SpreadsheetException(STR_MARK_IN_THE_MIDDLE_ERROR_MSG); + } + + private int characterCount(String str, String targetChar) throws SpreadsheetException { + int count = 0; + + if (targetChar.length() != 1) + throw new SpreadsheetException("Character count target length must be 1"); + + for (int i = 0; i < str.length(); i++) { + if (charAsStringFromPos(str, i).equals(targetChar)) { + count++; + } + } + + return count; + } + + private String evaluatedString(String unevaluatedString) throws SpreadsheetException { + if (false == STR_MARKS_ALLOWED_INSIDE_STRING) + return removeFirstAndLastChar(unevaluatedString); + + throw new SpreadsheetException("String evaluation method not found"); + } + + private String removeFirstAndLastChar(String target) { + String processedTarget = target.substring(1, target.length() - 1); + + assert (target.length() - 2) == processedTarget.length(); + + return processedTarget; + } + + private String charAsStringFromPos(String str, int pos) throws SpreadsheetException { + if (pos < 0 || pos > (str.length() - 1)) + throw new SpreadsheetException("Position out of bounds when getting string of 1 len from a string"); + + String ret = str.substring(pos, pos + 1); + + assert 1 == ret.length(); + + return ret; + } + + private boolean containsAllowedIntegers(String value) throws SpreadsheetException { + for (int i = 0; i < value.length(); i++) { + if (!isAllowedInteger(charAsStringFromPos(value, i))) + return false; + } + + return true; + } + + private boolean isAllowedInteger(String character) throws SpreadsheetException { + if (character.length() > 1) + throw new SpreadsheetException("Checking if integer is allowed possible for only strings with len of 1"); + + for (int i = 0; i < allowedIntegerChars.length; i++) { + if (character.equals(allowedIntegerChars[i])) + return true; + } + + return false; } } diff --git a/src/SpreadsheetException.java b/src/SpreadsheetException.java new file mode 100644 index 0000000..6adb6b0 --- /dev/null +++ b/src/SpreadsheetException.java @@ -0,0 +1,6 @@ + +public class SpreadsheetException extends Exception { + public SpreadsheetException(String msg) { + super(msg); + } +} diff --git a/tests/SpreadsheetTest.java b/tests/SpreadsheetTest.java index 9e0936a..8217867 100644 --- a/tests/SpreadsheetTest.java +++ b/tests/SpreadsheetTest.java @@ -5,11 +5,79 @@ public class SpreadsheetTest { + Spreadsheet spreadsheet = new Spreadsheet(); @Test - public void test() { - fail("Not yet implemented"); + public void testSetGet() throws SpreadsheetException { + spreadsheet.set("A1", "1"); + assertEquals("Cell does not return correct value", "1" , spreadsheet.get("A1")); } + @Test + public void testNegativeEvaluation() throws SpreadsheetException { + spreadsheet.set("A1", "-1"); + + assertEquals("Negative cell value evaluated incorrectly", "-1", spreadsheet.evaluate("A1")); + } + + @Test + public void testWronglyFormattedInteger_expectFail() throws SpreadsheetException { + spreadsheet.set("A1", "5A"); + + assertEquals("Wrongly formatted integer not detected", "#Error", spreadsheet.evaluate("A1")); + } + + @Test + public void testWronglyFormattedInteger_expectSuccess() throws SpreadsheetException { + spreadsheet.set("A1", "43_27"); + spreadsheet.set("A2", "437d813++"); + spreadsheet.set("A3", "23.05843570"); + spreadsheet.set("A4", "574f139578490"); + spreadsheet.set("A5", "-4719472819"); + spreadsheet.set("A6", "-99378914327"); + + assertFalse("Correctly formatted integer is mistaken as incorrectly formatted", + spreadsheet.evaluate("A6").equals("#Error")); + } + + @Test + public void evaluateString() throws SpreadsheetException { + spreadsheet.set("A1", "'a string'"); + + assertEquals("String not evaluated correctly", "a string", spreadsheet.evaluate("A1")); + } + + @Test + public void evaluateString_TooManyStrMarks() { + boolean caughtException = false; + spreadsheet.set("A1", "'str with ' in the middle'"); + + try { + spreadsheet.evaluate("A1"); + } catch (SpreadsheetException e) { + caughtException = true; + assertEquals("Caught different exception than expected", + e.getMessage(), spreadsheet.STR_MARK_IN_THE_MIDDLE_ERROR_MSG); + } + + if (!caughtException) + fail("String mark not found in the middle of a string"); + } + + @Test + public void detectStringIncorrectFormatting() throws SpreadsheetException { + spreadsheet.set("A1", "'a string"); + + assertEquals("Did not detect incorrect string formatting", + "#Error", spreadsheet.evaluate("A1")); + } + + @Test + public void formulaTestCorrectString() throws SpreadsheetException { + spreadsheet.set("A1", "='a string'"); + + assertEquals("Did not produce processed string from a formula expression", + "a string", spreadsheet.evaluate("A1")); + } }