| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- //
- // io_test.cxx
- // dice-td
- //
- // Created by Sam Jaffe on 1/16/21.
- // Copyright © 2021 Sam Jaffe. All rights reserved.
- //
- #include <sstream>
- #include "xcode_gtest_helper.h"
- #include "dice-roll/die.h"
- #include "dice-roll/roll.h"
- using testing::Eq;
- TEST(DiceIOTest, StringFormIsExplicit) {
- std::stringstream ss;
- ss << dice::from_string("2{2d6-d4+5}");
- EXPECT_THAT(ss.str(), Eq("2{2d6-1d4+5}"));
- }
- TEST(DiceIOTest, AllModifiersComeAtTheEnd) {
- std::stringstream ss;
- ss << dice::from_string("2d6-4-1d6+5");
- EXPECT_THAT(ss.str(), Eq("2d6-1d6-4+5"));
- }
- TEST(DiceIOTest, StringFormDoesNotPreserveWhitespace) {
- std::stringstream ss;
- 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"));
- }
- TEST(DiceIOTest, PrintsOutDCMarker) {
- std::string const tokens[] = {"<", "<=", ">", ">="};
- for (auto & tok : tokens) {
- std::stringstream ss;
- ss << dice::from_string("1d20" + tok + "10");
- EXPECT_THAT(ss.str(), "1d20" + tok + "10");
- }
- }
- TEST(RollIOTest, CanPrint0dN) {
- dice::dice_roll roll{{{}}};
- std::stringstream ss;
- ss << roll;
- EXPECT_THAT(ss.str(), Eq("0"));
- }
- TEST(RollIOTest, Prints1dNAsRollNumber) {
- dice::dice_roll roll{{{dice::sign::ZERO, {3}}}};
- std::stringstream ss;
- ss << roll;
- EXPECT_THAT(ss.str(), Eq("3"));
- }
- TEST(RollIOTest, PrintsNdMAsList) {
- dice::dice_roll roll{{{dice::sign::ZERO, {3, 2, 4}}}};
- std::stringstream ss;
- ss << roll;
- EXPECT_THAT(ss.str(), Eq("[ 3, 2, 4 ]"));
- }
- TEST(RollIOTest, PrintsModifiersAfterList) {
- dice::dice_roll roll{{{dice::sign::ZERO, {3, 2, 4}}},
- {{dice::sign::PLUS, 2}}};
- std::stringstream ss;
- ss << roll;
- EXPECT_THAT(ss.str(), Eq("[ 3, 2, 4 ]+2"));
- }
|