|
|
@@ -111,6 +111,14 @@ TEST(ParserTest, CanParseDC) {
|
|
|
EXPECT_NO_THROW(dice::from_string("1d20>=10"));
|
|
|
}
|
|
|
|
|
|
+TEST(ParserTest, DCCannotBeNegative) {
|
|
|
+ EXPECT_THROW(dice::from_string("1d20>-1"), dice::unexpected_token);
|
|
|
+}
|
|
|
+
|
|
|
+TEST(ParserTest, DCCanBeWhitespacePadded) {
|
|
|
+ EXPECT_NO_THROW(dice::from_string("1d20 < 10"));
|
|
|
+}
|
|
|
+
|
|
|
TEST(ParserTest, CanParseDCForMultiroll) {
|
|
|
EXPECT_NO_THROW(dice::from_string("2{1d20<10}"));
|
|
|
EXPECT_NO_THROW(dice::from_string("2{1d20<=10}"));
|
|
|
@@ -151,3 +159,11 @@ TEST(DiceIOTest, StringFormDoesNotPreserveWhitespace) {
|
|
|
ss << dice::from_string("2 { d 4 + 5 }");
|
|
|
EXPECT_THAT(ss.str(), Eq("2{1d4+5}"));
|
|
|
}
|
|
|
+
|
|
|
+TEST(DiceIOTest, CanReadDirectlyFromStream) {
|
|
|
+ std::stringstream in("2d6-4-1d6+5"), out;
|
|
|
+ dice::dice d;
|
|
|
+ in >> d;
|
|
|
+ out << d;
|
|
|
+ EXPECT_THAT(out.str(), Eq("2d6-1d6-4+5"));
|
|
|
+}
|