diff --git a/test/integration/handler_spec_test.cpp b/test/integration/handler_spec_test.cpp index fcb76d5..8cba902 100644 --- a/test/integration/handler_spec_test.cpp +++ b/test/integration/handler_spec_test.cpp @@ -347,7 +347,72 @@ TEST_F(HandlerSpecTest, Ex2_18_MultiLineFlowScalars) { Parse(ex2_18); } -// TODO: 2.19 - 2.22 schema tags +TEST_F(HandlerSpecTest, Ex2_19_Integers) { + EXPECT_CALL(handler, OnDocumentStart(_)); + EXPECT_CALL(handler, OnMapStart(_, "?", 0, EmitterStyle::Block)); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "canonical")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "12345")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "decimal")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "+12345")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "octal")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "0o14")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "hexadecimal")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "0xC")); + EXPECT_CALL(handler, OnMapEnd()); + EXPECT_CALL(handler, OnDocumentEnd()); + Parse(ex2_19); +} + +TEST_F(HandlerSpecTest, Ex2_20_FloatingPoint) { + EXPECT_CALL(handler, OnDocumentStart(_)); + EXPECT_CALL(handler, OnMapStart(_, "?", 0, EmitterStyle::Block)); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "canonical")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "1.23015e+3")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "exponential")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "12.3015e+02")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "fixed")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "1230.15")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "negative infinity")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "-.inf")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "not a number")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, ".NaN")); + EXPECT_CALL(handler, OnMapEnd()); + EXPECT_CALL(handler, OnDocumentEnd()); + Parse(ex2_20); +} + +TEST_F(HandlerSpecTest, Ex2_21_Miscellaneous) { + EXPECT_CALL(handler, OnDocumentStart(_)); + EXPECT_CALL(handler, OnMapStart(_, "?", 0, EmitterStyle::Block)); + EXPECT_CALL(handler, OnNull(_, 0)); + EXPECT_CALL(handler, OnNull(_, 0)); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "booleans")); + EXPECT_CALL(handler, OnSequenceStart(_, "?", 0, EmitterStyle::Flow)); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "true")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "false")); + EXPECT_CALL(handler, OnSequenceEnd()); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "string")); + EXPECT_CALL(handler, OnScalar(_, "!", 0, "012345")); + EXPECT_CALL(handler, OnMapEnd()); + EXPECT_CALL(handler, OnDocumentEnd()); + Parse(ex2_21); +} + +TEST_F(HandlerSpecTest, Ex2_22_Timestamps) { + EXPECT_CALL(handler, OnDocumentStart(_)); + EXPECT_CALL(handler, OnMapStart(_, "?", 0, EmitterStyle::Block)); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "canonical")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "2001-12-15T02:59:43.1Z")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "iso8601")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "2001-12-14t21:59:43.10-05:00")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "spaced")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "2001-12-14 21:59:43.10 -5")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "date")); + EXPECT_CALL(handler, OnScalar(_, "?", 0, "2002-12-14")); + EXPECT_CALL(handler, OnMapEnd()); + EXPECT_CALL(handler, OnDocumentEnd()); + Parse(ex2_22); +} TEST_F(HandlerSpecTest, Ex2_23_VariousExplicitTags) { EXPECT_CALL(handler, OnDocumentStart(_)); diff --git a/test/specexamples.h b/test/specexamples.h index 3c81c77..46e2c4c 100644 --- a/test/specexamples.h +++ b/test/specexamples.h @@ -154,7 +154,29 @@ const char *ex2_18 = "quoted: \"So does this\n" " quoted scalar.\\n\""; -// TODO: 2.19 - 2.22 schema tags +const char *ex2_19 = + "canonical: 12345\n" + "decimal: +12345\n" + "octal: 0o14\n" + "hexadecimal: 0xC\n"; + +const char *ex2_20 = + "canonical: 1.23015e+3\n" + "exponential: 12.3015e+02\n" + "fixed: 1230.15\n" + "negative infinity: -.inf\n" + "not a number: .NaN\n"; + +const char *ex2_21 = + "null:\n" + "booleans: [ true, false ]\n" + "string: '012345'\n"; + +const char *ex2_22 = + "canonical: 2001-12-15T02:59:43.1Z\n" + "iso8601: 2001-12-14t21:59:43.10-05:00\n" + "spaced: 2001-12-14 21:59:43.10 -5\n" + "date: 2002-12-14\n"; const char *ex2_23 = "---\n"