Skip to content

Commit

Permalink
fixed binary-search.cut
Browse files Browse the repository at this point in the history
  • Loading branch information
kapitaali committed Apr 20, 2024
1 parent 5162b58 commit d3c91ce
Showing 1 changed file with 27 additions and 111 deletions.
138 changes: 27 additions & 111 deletions exercises/practice/binary-search/tst/binary-search/binary-search.cut
Original file line number Diff line number Diff line change
@@ -1,160 +1,76 @@
***
* notice that the return index differs from COBOL index numbering
***

TestCase "finds a value in an array with one element"
MOVE 1 TO WS-COUNT
INITIALIZE WS-ARRAY-TABLE
MOVE 6 TO WS-ARRAY(1)
MOVE "6" TO WS-ARRAY
MOVE 6 TO WS-ITEM
PERFORM BINARY-SEARCH
EXPECT WS-RESULT = 0

EXPECT WS-RESULT = 1

TestCase "finds a value in the middle of an array"
MOVE 7 TO WS-COUNT
INITIALIZE WS-ARRAY-TABLE
MOVE 1 TO WS-ARRAY(1)
MOVE 3 TO WS-ARRAY(2)
MOVE 4 TO WS-ARRAY(3)
MOVE 6 TO WS-ARRAY(4)
MOVE 8 TO WS-ARRAY(5)
MOVE 9 TO WS-ARRAY(6)
MOVE 11 TO WS-ARRAY(7)
MOVE "1,3,4,6,8,9,11" TO WS-ARRAY
MOVE 6 TO WS-ITEM
PERFORM BINARY-SEARCH
EXPECT WS-RESULT = 3
EXPECT WS-RESULT = 4


TestCase "finds a value at the beginning of an array"
MOVE 7 TO WS-COUNT
INITIALIZE WS-ARRAY-TABLE
MOVE 1 TO WS-ARRAY(1)
MOVE 3 TO WS-ARRAY(2)
MOVE 4 TO WS-ARRAY(3)
MOVE 6 TO WS-ARRAY(4)
MOVE 8 TO WS-ARRAY(5)
MOVE 9 TO WS-ARRAY(6)
MOVE 11 TO WS-ARRAY(7)
TestCase "finds a value in the beginning of an array"
MOVE "1,3,4,6,8,9,11" TO WS-ARRAY
MOVE 1 TO WS-ITEM
PERFORM BINARY-SEARCH
EXPECT WS-RESULT = 0
EXPECT WS-RESULT = 1


TestCase "finds a value at the end of an array"
MOVE 7 TO WS-COUNT
INITIALIZE WS-ARRAY-TABLE
MOVE 1 TO WS-ARRAY(1)
MOVE 3 TO WS-ARRAY(2)
MOVE 4 TO WS-ARRAY(3)
MOVE 6 TO WS-ARRAY(4)
MOVE 8 TO WS-ARRAY(5)
MOVE 9 TO WS-ARRAY(6)
MOVE 11 TO WS-ARRAY(7)
MOVE "1,3,4,6,8,9,11" TO WS-ARRAY
MOVE 11 TO WS-ITEM
PERFORM BINARY-SEARCH
EXPECT WS-RESULT = 6
EXPECT WS-RESULT = 7


TestCase "finds a value in an array of odd length"
MOVE 13 TO WS-COUNT
INITIALIZE WS-ARRAY-TABLE
MOVE 1 TO WS-ARRAY(1)
MOVE 3 TO WS-ARRAY(2)
MOVE 5 TO WS-ARRAY(3)
MOVE 8 TO WS-ARRAY(4)
MOVE 13 TO WS-ARRAY(5)
MOVE 21 TO WS-ARRAY(6)
MOVE 34 TO WS-ARRAY(7)
MOVE 55 TO WS-ARRAY(8)
MOVE 89 TO WS-ARRAY(9)
MOVE 144 TO WS-ARRAY(10)
MOVE 233 TO WS-ARRAY(11)
MOVE 377 TO WS-ARRAY(12)
MOVE 634 TO WS-ARRAY(13)
MOVE "1,3,5,8,13,21,34,55,89,144,233,377,634" TO WS-ARRAY
MOVE 144 TO WS-ITEM
PERFORM BINARY-SEARCH
EXPECT WS-RESULT = 9
EXPECT WS-RESULT = 10


TestCase "finds a value in an array of even length"
MOVE 12 TO WS-COUNT
INITIALIZE WS-ARRAY-TABLE
MOVE 1 TO WS-ARRAY(1)
MOVE 3 TO WS-ARRAY(2)
MOVE 5 TO WS-ARRAY(3)
MOVE 8 TO WS-ARRAY(4)
MOVE 13 TO WS-ARRAY(5)
MOVE 21 TO WS-ARRAY(6)
MOVE 34 TO WS-ARRAY(7)
MOVE 55 TO WS-ARRAY(8)
MOVE 89 TO WS-ARRAY(9)
MOVE 144 TO WS-ARRAY(10)
MOVE 233 TO WS-ARRAY(11)
MOVE 377 TO WS-ARRAY(12)
MOVE "1,3,5,8,13,21,34,55,89,144,233,377,634" TO WS-ARRAY
MOVE 21 TO WS-ITEM
PERFORM BINARY-SEARCH
EXPECT WS-RESULT = 5


TestCase "identifies that a value is not included in the array"
MOVE 7 TO WS-COUNT
INITIALIZE WS-ARRAY-TABLE
MOVE 1 TO WS-ARRAY(1)
MOVE 3 TO WS-ARRAY(2)
MOVE 4 TO WS-ARRAY(3)
MOVE 6 TO WS-ARRAY(4)
MOVE 8 TO WS-ARRAY(5)
MOVE 9 TO WS-ARRAY(6)
MOVE 11 TO WS-ARRAY(7)
EXPECT WS-RESULT = 6


TestCase "finds a value in an array of even length"
MOVE "1,3,4,6,8,9,11" TO WS-ARRAY
MOVE 7 TO WS-ITEM
PERFORM BINARY-SEARCH
EXPECT WS-ERROR = "value not in array"


TestCase "a value smaller than the array's smallest value is not found"
MOVE 7 TO WS-COUNT
INITIALIZE WS-ARRAY-TABLE
MOVE 1 TO WS-ARRAY(1)
MOVE 3 TO WS-ARRAY(2)
MOVE 4 TO WS-ARRAY(3)
MOVE 6 TO WS-ARRAY(4)
MOVE 8 TO WS-ARRAY(5)
MOVE 9 TO WS-ARRAY(6)
MOVE 11 TO WS-ARRAY(7)
MOVE "1,3,4,6,8,9,11" TO WS-ARRAY
MOVE 0 TO WS-ITEM
PERFORM BINARY-SEARCH
EXPECT WS-ERROR = "value not in array"


TestCase "a value larger than the array's largest value is not found"
MOVE 7 TO WS-COUNT
INITIALIZE WS-ARRAY-TABLE
MOVE 1 TO WS-ARRAY(1)
MOVE 3 TO WS-ARRAY(2)
MOVE 4 TO WS-ARRAY(3)
MOVE 6 TO WS-ARRAY(4)
MOVE 8 TO WS-ARRAY(5)
MOVE 9 TO WS-ARRAY(6)
MOVE 11 TO WS-ARRAY(7)
MOVE "1,3,4,6,8,9,11" TO WS-ARRAY
MOVE 13 TO WS-ITEM
PERFORM BINARY-SEARCH
EXPECT WS-ERROR = "value not in array"


TestCase "nothing is found in an empty array"
MOVE 1 TO WS-COUNT
INITIALIZE WS-ARRAY-TABLE
MOVE 13 TO WS-ITEM
MOVE " " TO WS-ARRAY
MOVE 1 TO WS-ITEM
PERFORM BINARY-SEARCH
EXPECT WS-ERROR = "value not in array"


TestCase "nothing is found when the left and right bounds cross"
MOVE 2 TO WS-COUNT
INITIALIZE WS-ARRAY-TABLE
MOVE 1 TO WS-ARRAY(1)
MOVE 2 TO WS-ARRAY(2)
MOVE "1,2" TO WS-ARRAY
MOVE 0 TO WS-ITEM
PERFORM BINARY-SEARCH
EXPECT WS-ERROR = "value not in array"
EXPECT WS-ERROR = "value not in array"

0 comments on commit d3c91ce

Please sign in to comment.