Files
cabo-counter/test/data/round_test.dart

124 lines
3.9 KiB
Dart

import 'package:cabo_counter/data/dto/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(
roundId: 'testRoundId',
gameId: 'testGameId',
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(
roundId: 'testRoundId',
gameId: 'testGameId',
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(
roundId: 'testRoundId',
gameId: 'testGameId',
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);
});
});
}