@@ -1251,6 +1251,224 @@ TEST_F(EmitterTest, NaN) {
12511251 " bar: .nan" );
12521252}
12531253
1254+ TEST_F (EmitterTest, ComplexFlowSeqEmbeddingAMapWithNewLine) {
1255+ out << YAML::BeginMap;
1256+
1257+ out << YAML::Key << " NodeA" << YAML::Value << YAML::BeginMap;
1258+ out << YAML::Key << " k" << YAML::Value << YAML::Flow << YAML::BeginSeq;
1259+ out << YAML::BeginMap << YAML::Key << " i" << YAML::Value << 0 << YAML::EndMap
1260+ << YAML::Newline;
1261+ out << YAML::BeginMap << YAML::Key << " i" << YAML::Value << 1 << YAML::EndMap
1262+ << YAML::Newline;
1263+ out << YAML::EndSeq;
1264+ out << YAML::EndMap;
1265+
1266+ out << YAML::Key << " NodeB" << YAML::Value << YAML::BeginMap;
1267+ out << YAML::Key << " k" << YAML::Value << YAML::Flow << YAML::BeginSeq;
1268+ out << YAML::BeginMap << YAML::Key << " i" << YAML::Value << 0 << YAML::EndMap
1269+ << YAML::Newline;
1270+ out << YAML::BeginMap << YAML::Key << " i" << YAML::Value << 1 << YAML::EndMap
1271+ << YAML::Newline;
1272+ out << YAML::EndSeq;
1273+ out << YAML::EndMap;
1274+
1275+ out << YAML::EndMap;
1276+
1277+ ExpectEmit (R"( NodeA:
1278+ k: [{i: 0},
1279+ {i: 1},
1280+ ]
1281+ NodeB:
1282+ k: [{i: 0},
1283+ {i: 1},
1284+ ])" );
1285+ }
1286+
1287+ TEST_F (EmitterTest, ComplexFlowSeqEmbeddingAMapWithNewLineUsingAliases) {
1288+ out << BeginMap;
1289+
1290+ out << Key << " Node" << Anchor (" Node" ) << Value << BeginMap;
1291+ out << Key << " k" << Value << Flow << BeginSeq;
1292+ out << BeginMap << Key << " i" << Value << 0 << EndMap;
1293+ out << YAML::Newline;
1294+ out << BeginMap << Key << " i" << Value << 1 << EndMap;
1295+ out << YAML::Newline;
1296+ out << EndSeq << EndMap;
1297+
1298+ out << Key << " NodeA" << Alias (" Node" );
1299+ out << Key << " NodeB" << Alias (" Node" );
1300+
1301+ out << EndMap;
1302+
1303+ ExpectEmit (R"( Node: &Node
1304+ k: [{i: 0},
1305+ {i: 1},
1306+ ]
1307+ NodeA: *Node
1308+ NodeB: *Node)" );
1309+ }
1310+
1311+ TEST_F (EmitterTest, ComplexFlowSeqEmbeddingAMapUsingAliases) {
1312+ out << BeginMap;
1313+
1314+ out << Key << " Node" << Anchor (" Node" ) << Value << BeginMap;
1315+ out << Key << " k" << Value << Flow << BeginSeq;
1316+ out << BeginMap << Key << " i" << Value << 0 << EndMap;
1317+ out << BeginMap << Key << " i" << Value << 1 << EndMap;
1318+ out << EndSeq << EndMap;
1319+
1320+ out << Key << " NodeA" << Alias (" Node" );
1321+ out << Key << " NodeB" << Alias (" Node" );
1322+
1323+ out << EndMap;
1324+
1325+ ExpectEmit (R"( Node: &Node
1326+ k: [{i: 0}, {i: 1}]
1327+ NodeA: *Node
1328+ NodeB: *Node)" );
1329+ }
1330+
1331+ TEST_F (EmitterTest, ComplexFlowSeqEmbeddingAMapWithNewLineUsingAliases2) {
1332+ out << BeginMap;
1333+
1334+ out << Key << " Seq" << Anchor (" Seq" ) << Flow << BeginSeq;
1335+ out << BeginMap << Key << " i" << Value << 0 << EndMap;
1336+ out << YAML::Newline;
1337+ out << BeginMap << Key << " i" << Value << 1 << EndMap;
1338+ out << YAML::Newline;
1339+ out << EndSeq;
1340+
1341+ out << Key << " NodeA" << Value << BeginMap;
1342+ out << Key << " k" << Value << Alias (" Seq" ) << EndMap;
1343+ out << Key << " NodeB" << Value << BeginMap;
1344+ out << Key << " k" << Value << Alias (" Seq" ) << EndMap;
1345+
1346+ out << EndMap;
1347+
1348+ ExpectEmit (R"( Seq: &Seq [{i: 0},
1349+ {i: 1},
1350+ ]
1351+ NodeA:
1352+ k: *Seq
1353+ NodeB:
1354+ k: *Seq)" );
1355+ }
1356+
1357+ TEST_F (EmitterTest, ComplexFlowSeqEmbeddingAMapUsingAliases2) {
1358+ out << BeginMap;
1359+
1360+ out << Key << " Seq" << Anchor (" Seq" ) << Value << Flow << BeginSeq;
1361+ out << BeginMap << Key << " i" << Value << 0 << EndMap;
1362+ out << BeginMap << Key << " i" << Value << 1 << EndMap;
1363+ out << EndSeq;
1364+
1365+ out << Key << " NodeA" << Value << BeginMap;
1366+ out << Key << " k" << Value << Alias (" Seq" ) << EndMap;
1367+ out << Key << " NodeB" << Value << BeginMap;
1368+ out << Key << " k" << Value << Alias (" Seq" ) << EndMap;
1369+
1370+ out << EndMap;
1371+
1372+ ExpectEmit (R"( Seq: &Seq [{i: 0}, {i: 1}]
1373+ NodeA:
1374+ k: *Seq
1375+ NodeB:
1376+ k: *Seq)" );
1377+ }
1378+
1379+ TEST_F (EmitterTest, ComplexFlowSeqEmbeddingAMapWithNewLineUsingAliases3) {
1380+ out << BeginMap;
1381+
1382+ out << Key << " Keys" << Value << Flow << BeginSeq;
1383+ out << Anchor (" k0" ) << BeginMap << Key << " i" << Value << 0 << EndMap
1384+ << Newline;
1385+ out << Anchor (" k1" ) << BeginMap << Key << " i" << Value << 1 << EndMap
1386+ << Newline;
1387+ out << EndSeq;
1388+
1389+ out << Key << " NodeA" << Value << BeginMap;
1390+ out << Key << " k" << Value << Flow << BeginSeq;
1391+ out << Alias (" k0" ) << Newline << Alias (" k1" ) << Newline;
1392+ out << EndSeq << EndMap;
1393+
1394+ out << Key << " NodeB" << Value << BeginMap;
1395+ out << Key << " k" << Value << Flow << BeginSeq;
1396+ out << Alias (" k0" ) << Newline << Alias (" k1" ) << Newline;
1397+ out << EndSeq << EndMap;
1398+
1399+ out << EndMap;
1400+
1401+ ExpectEmit (R"( Keys: [&k0 {i: 0},
1402+ &k1 {i: 1},
1403+ ]
1404+ NodeA:
1405+ k: [*k0,
1406+ *k1,
1407+ ]
1408+ NodeB:
1409+ k: [*k0,
1410+ *k1,
1411+ ])" );
1412+ }
1413+
1414+ TEST_F (EmitterTest, ComplexFlowSeqEmbeddingAMapUsingAliases3a) {
1415+ out << BeginMap;
1416+
1417+ out << Key << " Keys" << Value << BeginSeq;
1418+ out << Anchor (" k0" ) << BeginMap << Key << " i" << Value << 0 << EndMap;
1419+ out << Anchor (" k1" ) << BeginMap << Key << " i" << Value << 1 << EndMap;
1420+ out << EndSeq;
1421+
1422+ out << Key << " NodeA" << Value << BeginMap;
1423+ out << Key << " k" << Value << Flow << BeginSeq;
1424+ out << Alias (" k0" ) << Alias (" k1" );
1425+ out << EndSeq << EndMap;
1426+
1427+ out << Key << " NodeB" << Value << BeginMap;
1428+ out << Key << " k" << Value << Flow << BeginSeq;
1429+ out << Alias (" k0" ) << Alias (" k1" );
1430+ out << EndSeq << EndMap;
1431+
1432+ out << EndMap;
1433+
1434+ ExpectEmit (R"( Keys:
1435+ - &k0
1436+ i: 0
1437+ - &k1
1438+ i: 1
1439+ NodeA:
1440+ k: [*k0, *k1]
1441+ NodeB:
1442+ k: [*k0, *k1])" );
1443+ }
1444+
1445+ TEST_F (EmitterTest, ComplexFlowSeqEmbeddingAMapUsingAliases3b) {
1446+ out << BeginMap;
1447+
1448+ out << Key << " Keys" << Value << Flow << BeginSeq;
1449+ out << Anchor (" k0" ) << BeginMap << Key << " i" << Value << 0 << EndMap;
1450+ out << Anchor (" k1" ) << BeginMap << Key << " i" << Value << 1 << EndMap;
1451+ out << EndSeq;
1452+
1453+ out << Key << " NodeA" << Value << BeginMap;
1454+ out << Key << " k" << Value << Flow << BeginSeq;
1455+ out << Alias (" k0" ) << Alias (" k1" );
1456+ out << EndSeq << EndMap;
1457+
1458+ out << Key << " NodeB" << Value << BeginMap;
1459+ out << Key << " k" << Value << Flow << BeginSeq;
1460+ out << Alias (" k0" ) << Alias (" k1" );
1461+ out << EndSeq << EndMap;
1462+
1463+ out << EndMap;
1464+
1465+ ExpectEmit (R"( Keys: [&k0 {i: 0}, &k1 {i: 1}]
1466+ NodeA:
1467+ k: [*k0, *k1]
1468+ NodeB:
1469+ k: [*k0, *k1])" );
1470+ }
1471+
12541472class EmitterErrorTest : public ::testing::Test {
12551473 protected:
12561474 void ExpectEmitError (const std::string& expectedError) {
0 commit comments