118 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
			
		
		
	
	
			118 lines
		
	
	
		
			3.7 KiB
		
	
	
	
		
			Dart
		
	
	
	
	
	
| import 'package:cabo_counter/data/round.dart';
 | |
| import 'package:test/test.dart';
 | |
| 
 | |
| void main() {
 | |
|   late Round round;
 | |
|   const testRoundNum = 1;
 | |
|   const testCaboPlayerIndex = 0;
 | |
|   const testKamikazePlayerIndex = 1;
 | |
|   const testScores = [10, 20, 30];
 | |
|   const testScoreUpdates = [5, 15, 25];
 | |
| 
 | |
|   setUp(() {
 | |
|     round = Round(
 | |
|       roundNum: testRoundNum,
 | |
|       caboPlayerIndex: testCaboPlayerIndex,
 | |
|       kamikazePlayerIndex: testKamikazePlayerIndex,
 | |
|       scores: testScores,
 | |
|       scoreUpdates: testScoreUpdates,
 | |
|     );
 | |
|   });
 | |
| 
 | |
|   group('Constructor Tests', () {
 | |
|     test('Constructor sets correct values', () {
 | |
|       expect(round.roundNum, testRoundNum);
 | |
|       expect(round.caboPlayerIndex, testCaboPlayerIndex);
 | |
|       expect(round.kamikazePlayerIndex, testKamikazePlayerIndex);
 | |
|       expect(round.scores, testScores);
 | |
|       expect(round.scoreUpdates, testScoreUpdates);
 | |
|     });
 | |
| 
 | |
|     test('Constructor with null kamikazePlayerIndex', () {
 | |
|       final roundWithoutKamikaze = Round(
 | |
|         roundNum: testRoundNum,
 | |
|         caboPlayerIndex: testCaboPlayerIndex,
 | |
|         kamikazePlayerIndex: null,
 | |
|         scores: testScores,
 | |
|         scoreUpdates: testScoreUpdates,
 | |
|       );
 | |
| 
 | |
|       expect(roundWithoutKamikaze.kamikazePlayerIndex, isNull);
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   group('JSON Methods', () {
 | |
|     test('toJson() returns correct map', () {
 | |
|       final jsonMap = round.toJson();
 | |
| 
 | |
|       expect(jsonMap['roundNum'], equals(testRoundNum));
 | |
|       expect(jsonMap['caboPlayerIndex'], equals(testCaboPlayerIndex));
 | |
|       expect(jsonMap['kamikazePlayerIndex'], equals(testKamikazePlayerIndex));
 | |
|       expect(jsonMap['scores'], equals(testScores));
 | |
|       expect(jsonMap['scoreUpdates'], equals(testScoreUpdates));
 | |
|     });
 | |
| 
 | |
|     test('fromJson() creates correct Round object', () {
 | |
|       final jsonMap = {
 | |
|         'roundNum': testRoundNum,
 | |
|         'caboPlayerIndex': testCaboPlayerIndex,
 | |
|         'kamikazePlayerIndex': testKamikazePlayerIndex,
 | |
|         'scores': testScores,
 | |
|         'scoreUpdates': testScoreUpdates,
 | |
|       };
 | |
| 
 | |
|       final fromJsonRound = Round.fromJson(jsonMap);
 | |
| 
 | |
|       expect(fromJsonRound.roundNum, testRoundNum);
 | |
|       expect(fromJsonRound.caboPlayerIndex, testCaboPlayerIndex);
 | |
|       expect(fromJsonRound.kamikazePlayerIndex, testKamikazePlayerIndex);
 | |
|       expect(fromJsonRound.scores, testScores);
 | |
|       expect(fromJsonRound.scoreUpdates, testScoreUpdates);
 | |
|     });
 | |
| 
 | |
|     test('fromJson() with null kamikazePlayerIndex', () {
 | |
|       final jsonMap = {
 | |
|         'roundNum': testRoundNum,
 | |
|         'caboPlayerIndex': testCaboPlayerIndex,
 | |
|         'kamikazePlayerIndex': null,
 | |
|         'scores': testScores,
 | |
|         'scoreUpdates': testScoreUpdates,
 | |
|       };
 | |
| 
 | |
|       final fromJsonRound = Round.fromJson(jsonMap);
 | |
| 
 | |
|       expect(fromJsonRound.kamikazePlayerIndex, isNull);
 | |
|     });
 | |
|   });
 | |
| 
 | |
|   group('toString()', () {
 | |
|     test('toString() returns correct string representation', () {
 | |
|       final expectedString = 'Round $testRoundNum, '
 | |
|           'caboPlayerIndex: $testCaboPlayerIndex, '
 | |
|           'kamikazePlayerIndex: $testKamikazePlayerIndex, '
 | |
|           'scores: $testScores, '
 | |
|           'scoreUpdates: $testScoreUpdates, ';
 | |
| 
 | |
|       expect(round.toString(), equals(expectedString));
 | |
|     });
 | |
| 
 | |
|     test('toString() with null kamikazePlayerIndex', () {
 | |
|       final roundWithoutKamikaze = Round(
 | |
|         roundNum: testRoundNum,
 | |
|         caboPlayerIndex: testCaboPlayerIndex,
 | |
|         kamikazePlayerIndex: null,
 | |
|         scores: testScores,
 | |
|         scoreUpdates: testScoreUpdates,
 | |
|       );
 | |
| 
 | |
|       final expectedString = 'Round $testRoundNum, '
 | |
|           'caboPlayerIndex: $testCaboPlayerIndex, '
 | |
|           'kamikazePlayerIndex: null, '
 | |
|           'scores: $testScores, '
 | |
|           'scoreUpdates: $testScoreUpdates, ';
 | |
| 
 | |
|       expect(roundWithoutKamikaze.toString(), expectedString);
 | |
|     });
 | |
|   });
 | |
| }
 | 
