Files
dungeon_world_data/test/_old/dice_test.dart
2022-02-13 02:00:03 +02:00

76 lines
2.2 KiB
Dart

import 'package:dungeon_world_data/_old/dw_data.dart';
import 'package:test/test.dart';
void main() {
group('Dice', () {
test('Sides and amount', () {
var expected = Dice(6, 2);
expect(expected.sides, equals(6));
expect(expected.amount, equals(2));
});
test('String representation', () {
var dice1 = Dice(10, 4);
var dice2 = Dice(6, 2, 3);
var dice3 = Dice(20, 2, -4);
expect(dice1.toString(), equals('4d10'));
expect(dice2.toString(), equals('2d6+3'));
expect(dice3.toString(), equals('2d20-4'));
});
test('Multiplication', () {
num amt = 10;
var dice = Dice.d12 * amt;
expect(dice.amount, amt);
});
test('Equality', () {
var compare = {
Dice(4): Dice.d4,
Dice(6): Dice.d6,
Dice(8): Dice.d8,
Dice(10): Dice.d10,
Dice(12): Dice.d12,
Dice(20): Dice.d20,
};
for (var d in compare.keys) {
expect(d, equals(compare[d]));
expect(compare.values.where((el) => el == d).length, equals(1));
}
});
test('Roll', () {
var d1 = Dice.d6;
var d2 = Dice.d12 * 2;
var d3 = Dice.d8 * 3;
var roll1 = d1.getRoll();
var roll2 = d2.getRoll();
var roll3 = d3.getRoll();
expect(roll1.results[0], greaterThanOrEqualTo(1));
expect(roll1.results[0], lessThanOrEqualTo(6));
expect(roll2.results.length, equals(d2.amount));
expect(roll2.results[0], greaterThanOrEqualTo(1));
expect(roll2.results[0], lessThanOrEqualTo(12));
expect(roll2.results[1], greaterThanOrEqualTo(1));
expect(roll2.results[1], lessThanOrEqualTo(12));
expect(roll3.results.length, equals(d3.amount));
expect(roll3.results[0], greaterThanOrEqualTo(1));
expect(roll3.results[0], lessThanOrEqualTo(8));
expect(roll3.results[1], greaterThanOrEqualTo(1));
expect(roll3.results[1], lessThanOrEqualTo(8));
expect(roll3.results[2], greaterThanOrEqualTo(1));
expect(roll3.results[2], lessThanOrEqualTo(8));
});
test('Roll', () {
var dice = Dice.d6;
var roll = dice.getRoll();
expect(roll.results[0], greaterThanOrEqualTo(1));
expect(roll.results[0], lessThanOrEqualTo(6));
});
});
}