Example #1
0
static void
dice_parse_test(void)
{
    struct dice dice;

    dice = dice_parse("0");
    assert(0 == dice.count);
    assert(1 == dice.sides);
    assert(0 == dice.modifier);
    assert(1 == dice.multiplier);

    dice = dice_parse("1");
    assert(1 == dice.count);
    assert(1 == dice.sides);
    assert(0 == dice.modifier);
    assert(1 == dice.multiplier);
    
    dice = dice_parse("5");
    assert(5 == dice.count);
    assert(1 == dice.sides);
    assert(0 == dice.modifier);
    assert(1 == dice.multiplier);
    
    dice = dice_parse("0d4+2");
    assert(0 == dice.count);
    assert(4 == dice.sides);
    assert(2 == dice.modifier);
    assert(1 == dice.multiplier);

    dice = dice_parse("1d6");
    assert(1 == dice.count);
    assert(6 == dice.sides);
    assert(0 == dice.modifier);
    assert(1 == dice.multiplier);

    dice = dice_parse("2D6");
    assert(2 == dice.count);
    assert(6 == dice.sides);
    assert(0 == dice.modifier);
    assert(1 == dice.multiplier);
    
    dice = dice_parse("10+1");
    assert(10 == dice.count);
    assert(1 == dice.sides);
    assert(1 == dice.modifier);
    assert(1 == dice.multiplier);
    
    dice = dice_parse("1d6+1");
    assert(1 == dice.count);
    assert(6 == dice.sides);
    assert(1 == dice.modifier);
    assert(1 == dice.multiplier);
    
    dice = dice_parse("2d4-1");
    assert(2 == dice.count);
    assert(4 == dice.sides);
    assert(-1 == dice.modifier);
    assert(1 == dice.multiplier);
    
    dice = dice_parse("5*10");
    assert(5 == dice.count);
    assert(1 == dice.sides);
    assert(0 == dice.modifier);
    assert(10 == dice.multiplier);
    
    dice = dice_parse("1d6*10");
    assert(1 == dice.count);
    assert(6 == dice.sides);
    assert(0 == dice.modifier);
    assert(10 == dice.multiplier);
    
    dice = dice_parse("5D4X-5");
    assert(5 == dice.count);
    assert(4 == dice.sides);
    assert(0 == dice.modifier);
    assert(-5 == dice.multiplier);
    
    dice = dice_parse("2d10+4x100");
    assert(2 == dice.count);
    assert(10 == dice.sides);
    assert(4 == dice.modifier);
    assert(100 == dice.multiplier);
}
Example #2
0
int
roll(char const *dice_string, struct rnd *rnd)
{
    return dice_roll(dice_parse(dice_string), rnd, NULL);
}