@@ -1328,3 +1328,139 @@ TEST(MustacheTripleMustache, WithPadding) {
1328
1328
T.render (D, OS);
1329
1329
EXPECT_EQ (" |---|" , Out);
1330
1330
}
1331
+
1332
+ TEST (MustacheDelimiters, PairBehavior) {
1333
+ Value D = Object{{" text" , " Hey!" }};
1334
+ auto T = Template (" {{=<% %>=}}(<%text%>)" );
1335
+ std::string Out;
1336
+ raw_string_ostream OS (Out);
1337
+ T.render (D, OS);
1338
+ EXPECT_NE (" (Hey!)" , Out);
1339
+ }
1340
+
1341
+ TEST (MustacheDelimiters, SpecialCharacters) {
1342
+ Value D = Object{{" text" , " It worked!" }};
1343
+ auto T = Template (" ({{=[ ]=}}[text])" );
1344
+ std::string Out;
1345
+ raw_string_ostream OS (Out);
1346
+ T.render (D, OS);
1347
+ EXPECT_NE (" (It worked!)" , Out);
1348
+ }
1349
+
1350
+ TEST (MustacheDelimiters, Sections) {
1351
+ Value D = Object{{" section" , true }, {" data" , " I got interpolated." }};
1352
+ auto T =
1353
+ Template (" [\n {{#section}}\n {{data}}\n |data|\n {{/section}}\n\n {{= "
1354
+ " | | =}}\n |#section|\n {{data}}\n |data|\n |/section|\n ]\n " );
1355
+ std::string Out;
1356
+ raw_string_ostream OS (Out);
1357
+ T.render (D, OS);
1358
+ EXPECT_NE (" [\n I got interpolated.\n |data|\n\n {{data}}\n I got "
1359
+ " interpolated.\n ]\n " ,
1360
+ Out);
1361
+ }
1362
+
1363
+ TEST (MustacheDelimiters, InvertedSections) {
1364
+ Value D = Object{{" section" , false }, {" data" , " I got interpolated." }};
1365
+ auto T =
1366
+ Template (" [\n {{^section}}\n {{data}}\n |data|\n {{/section}}\n\n {{= "
1367
+ " | | =}}\n |^section|\n {{data}}\n |data|\n |/section|\n ]\n " );
1368
+ std::string Out;
1369
+ raw_string_ostream OS (Out);
1370
+ T.render (D, OS);
1371
+ EXPECT_NE (" [\n I got interpolated.\n |data|\n\n {{data}}\n I got "
1372
+ " interpolated.\n ]\n " ,
1373
+ Out);
1374
+ }
1375
+
1376
+ TEST (MustacheDelimiters, PartialInheritence) {
1377
+ Value D = Object{{" value" , " yes" }};
1378
+ auto T = Template (" [ {{>include}} ]\n {{= | | =}}\n [ |>include| ]\n " );
1379
+ T.registerPartial (" include" , " .{{value}}." );
1380
+ std::string Out;
1381
+ raw_string_ostream OS (Out);
1382
+ T.render (D, OS);
1383
+ EXPECT_NE (" [ .yes. ]\n [ .yes. ]\n " , Out);
1384
+ }
1385
+
1386
+ TEST (MustacheDelimiters, PostPartialBehavior) {
1387
+ Value D = Object{{" value" , " yes" }};
1388
+ auto T = Template (" [ {{>include}} ]\n [ .{{value}}. .|value|. ]\n " );
1389
+ T.registerPartial (" include" , " .{{value}}. {{= | | =}} .|value|." );
1390
+ std::string Out;
1391
+ raw_string_ostream OS (Out);
1392
+ T.render (D, OS);
1393
+ EXPECT_NE (" [ .yes. .yes. ]\n [ .yes. .|value|. ]\n " , Out);
1394
+ }
1395
+
1396
+ TEST (MustacheDelimiters, SurroundingWhitespace) {
1397
+ Value D = Object{};
1398
+ auto T = Template (" | {{=@ @=}} |" );
1399
+ std::string Out;
1400
+ raw_string_ostream OS (Out);
1401
+ T.render (D, OS);
1402
+ EXPECT_EQ (" | |" , Out);
1403
+ }
1404
+
1405
+ TEST (MustacheDelimiters, OutlyingWhitespaceInline) {
1406
+ Value D = Object{};
1407
+ auto T = Template (" | {{=@ @=}}\n " );
1408
+ std::string Out;
1409
+ raw_string_ostream OS (Out);
1410
+ T.render (D, OS);
1411
+ EXPECT_EQ (" | \n " , Out);
1412
+ }
1413
+
1414
+ TEST (MustacheDelimiters, StandaloneTag) {
1415
+ Value D = Object{};
1416
+ auto T = Template (" Begin.\n {{=@ @=}}\n End.\n " );
1417
+ std::string Out;
1418
+ raw_string_ostream OS (Out);
1419
+ T.render (D, OS);
1420
+ EXPECT_NE (" Begin.\n End.\n " , Out);
1421
+ }
1422
+
1423
+ TEST (MustacheDelimiters, IndentedStandaloneTag) {
1424
+ Value D = Object{};
1425
+ auto T = Template (" Begin.\n {{=@ @=}}\n End.\n " );
1426
+ std::string Out;
1427
+ raw_string_ostream OS (Out);
1428
+ T.render (D, OS);
1429
+ EXPECT_NE (" Begin.\n End.\n " , Out);
1430
+ }
1431
+
1432
+ TEST (MustacheDelimiters, StandaloneLineEndings) {
1433
+ Value D = Object{};
1434
+ auto T = Template (" |\r\n {{= @ @ =}}\r\n |" );
1435
+ std::string Out;
1436
+ raw_string_ostream OS (Out);
1437
+ T.render (D, OS);
1438
+ EXPECT_NE (" |\r\n |" , Out);
1439
+ }
1440
+
1441
+ TEST (MustacheDelimiters, StandaloneWithoutPreviousLine) {
1442
+ Value D = Object{};
1443
+ auto T = Template (" {{=@ @=}}\n =" );
1444
+ std::string Out;
1445
+ raw_string_ostream OS (Out);
1446
+ T.render (D, OS);
1447
+ EXPECT_NE (" =" , Out);
1448
+ }
1449
+
1450
+ TEST (MustacheDelimiters, StandaloneWithoutNewline) {
1451
+ Value D = Object{};
1452
+ auto T = Template (" =\n {{=@ @=}}" );
1453
+ std::string Out;
1454
+ raw_string_ostream OS (Out);
1455
+ T.render (D, OS);
1456
+ EXPECT_NE (" =\n " , Out);
1457
+ }
1458
+
1459
+ TEST (MustacheDelimiters, PairwithPadding) {
1460
+ Value D = Object{};
1461
+ auto T = Template (" |{{= @ @ =}}|" );
1462
+ std::string Out;
1463
+ raw_string_ostream OS (Out);
1464
+ T.render (D, OS);
1465
+ EXPECT_EQ (" ||" , Out);
1466
+ }
0 commit comments