-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathTicTacToeKata.st
102 lines (81 loc) · 3.76 KB
/
TicTacToeKata.st
1
Object subclass: #TicTacToe instanceVariableNames: 'allTheFieldAreTaken allFieldsInAColumnAreTakenByAPlayer allFieldsInARowAreTakenByAPlayer allFieldsInADiagonalAreTakenByAPlayer isOver' classVariableNames: '' poolDictionaries: '' category: 'TicTacToeKata'!!TicTacToe methodsFor: 'as yet unclassified' stamp: 'SergeStinckwich 6/18/2011 15:01'!allFieldsAreTaken allTheFieldAreTaken := true! !!TicTacToe methodsFor: 'as yet unclassified' stamp: 'SergeStinckwich 6/18/2011 15:08'!allFieldsInAColumnAreTakenByAPlayer allFieldsInAColumnAreTakenByAPlayer := true! !!TicTacToe methodsFor: 'as yet unclassified' stamp: 'SergeStinckwich 6/18/2011 15:20'!allFieldsInARowAreTakenByAPlayer allFieldsInARowAreTakenByAPlayer := true! !!TicTacToe methodsFor: 'as yet unclassified' stamp: 'SergeStinckwich 6/18/2011 15:27'!allFieldsInDiagonalAreTakenByAPlayer allFieldsInADiagonalAreTakenByAPlayer := true! !!TicTacToe methodsFor: 'as yet unclassified' stamp: 'SergeStinckwich 6/18/2011 15:26'!initialize allTheFieldAreTaken := false. allFieldsInAColumnAreTakenByAPlayer := false. allFieldsInARowAreTakenByAPlayer := false. allFieldsInADiagonalAreTakenByAPlayer := false.! !!TicTacToe methodsFor: 'as yet unclassified' stamp: 'SergeStinckwich 6/18/2011 15:25'!isOver ^ allTheFieldAreTaken or: allFieldsInAColumnAreTakenByAPlayer or: allFieldsInARowAreTakenByAPlayer or: allFieldsInADiagonalAreTakenByAPlayer ! !!TicTacToe methodsFor: 'as yet unclassified' stamp: 'SergeStinckwich 6/18/2011 15:53'!isOver: state isOver := state! !!TicTacToe methodsFor: 'as yet unclassified' stamp: 'SergeStinckwich 6/18/2011 15:55'!playersCanTakeTurns ^ isOver not! !TestCase subclass: #TicTacToeTest instanceVariableNames: 'game field' classVariableNames: '' poolDictionaries: '' category: 'TicTacToeKata'!!TicTacToeTest methodsFor: 'as yet unclassified' stamp: 'SergeStinckwich 6/18/2011 16:00'!setUp game := TicTacToe new. field := TicTacToeField new.! !!TicTacToeTest methodsFor: 'as yet unclassified' stamp: 'SergeStinckwich 6/18/2011 15:48'!testAGameIsOverWhenAllFieldsAreTaken game allFieldsAreTaken. self assert: true equals: game isOver! !!TicTacToeTest methodsFor: 'as yet unclassified' stamp: 'SergeStinckwich 6/18/2011 15:48'!testAGameIsOverWhenAllFieldsInAColumnAreTakenByAPlayer game allFieldsInAColumnAreTakenByAPlayer. self assert: true equals: game isOver! !!TicTacToeTest methodsFor: 'as yet unclassified' stamp: 'SergeStinckwich 6/18/2011 15:48'!testAGameIsOverWhenAllFieldsInADiagonalAreTakenByAPlayer game allFieldsInDiagonalAreTakenByAPlayer . self assert: true equals: game isOver! !!TicTacToeTest methodsFor: 'as yet unclassified' stamp: 'SergeStinckwich 6/18/2011 16:00'!testAGameIsOverWhenAllFieldsInARowAreTakenByAPlayer game allFieldsInARowAreTakenByAPlayer. self assert: true equals: game isOver! !!TicTacToeTest methodsFor: 'as yet unclassified' stamp: 'SergeStinckwich 6/18/2011 16:00'!testAPlayerCanTakeAFieldIfNotAlreadyTaken field isNotAlreadyTaken. self assert: field aPlayerCanTakeMe! !!TicTacToeTest methodsFor: 'as yet unclassified' stamp: 'SergeStinckwich 6/18/2011 15:56'!testPlayersTakeTurnsTakingFieldsUntilTheGameIsOver game isOver: false. self assert: game playersCanTakeTurns. game isOver: true. self assert: game playersCanTakeTurns not. ! !Object subclass: #TicTacToeField instanceVariableNames: '' classVariableNames: '' poolDictionaries: '' category: 'TicTacToeKata'!!TicTacToeField methodsFor: 'as yet unclassified' stamp: 'SergeStinckwich 6/18/2011 15:45'!aPlayerCanTakeMe | aPlayerCanTakeAField | aPlayerCanTakeAField := true. ^ aPlayerCanTakeAField! !!TicTacToeField methodsFor: 'as yet unclassified' stamp: 'SergeStinckwich 6/18/2011 15:44'!isNotAlreadyTaken | fieldIsNotAlreadyTaken | fieldIsNotAlreadyTaken := true! !