Skip to content

Commit bd373f5

Browse files
committed
Add comprehensive CLI import and export test cases for help options and edge cases.
1 parent 0ae8f6c commit bd373f5

File tree

1 file changed

+139
-0
lines changed

1 file changed

+139
-0
lines changed

test/src/PAGXCliTest.cpp

Lines changed: 139 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1364,4 +1364,143 @@ CLI_TEST(PAGXCliTest, Import_UnknownFormatInference) {
13641364
EXPECT_NE(ret, 0);
13651365
}
13661366

1367+
CLI_TEST(PAGXCliTest, Import_Help) {
1368+
auto ret = CallRun(pagx::cli::RunImport, {"import", "--help"});
1369+
EXPECT_EQ(ret, 0);
1370+
}
1371+
1372+
CLI_TEST(PAGXCliTest, Import_HelpShort) {
1373+
auto ret = CallRun(pagx::cli::RunImport, {"import", "-h"});
1374+
EXPECT_EQ(ret, 0);
1375+
}
1376+
1377+
CLI_TEST(PAGXCliTest, Import_SvgOptions) {
1378+
auto pagxPath = TestResourcePath("render_basic.pagx");
1379+
auto svgPath = TempDir() + "/ImportSVG_Options.svg";
1380+
auto ret = CallRun(pagx::cli::RunExport, {"export", "--input", pagxPath, "--output", svgPath});
1381+
ASSERT_EQ(ret, 0);
1382+
auto outputPath = TempDir() + "/ImportSVG_Options.pagx";
1383+
ret = CallRun(pagx::cli::RunImport,
1384+
{"import", "--svg-no-expand-use", "--svg-flatten-transforms",
1385+
"--svg-preserve-unknown", "--input", svgPath, "--output", outputPath});
1386+
EXPECT_EQ(ret, 0);
1387+
auto output = ReadFile(outputPath);
1388+
EXPECT_NE(output.find("<pagx"), std::string::npos);
1389+
}
1390+
1391+
CLI_TEST(PAGXCliTest, Import_UnexpectedArgument) {
1392+
auto ret = CallRun(pagx::cli::RunImport, {"import", "somefile.svg"});
1393+
EXPECT_NE(ret, 0);
1394+
}
1395+
1396+
CLI_TEST(PAGXCliTest, Export_Help) {
1397+
auto ret = CallRun(pagx::cli::RunExport, {"export", "--help"});
1398+
EXPECT_EQ(ret, 0);
1399+
}
1400+
1401+
CLI_TEST(PAGXCliTest, Export_HelpShort) {
1402+
auto ret = CallRun(pagx::cli::RunExport, {"export", "-h"});
1403+
EXPECT_EQ(ret, 0);
1404+
}
1405+
1406+
CLI_TEST(PAGXCliTest, Export_InvalidIndent_NonNumeric) {
1407+
auto inputPath = TestResourcePath("render_basic.pagx");
1408+
auto ret = CallRun(pagx::cli::RunExport,
1409+
{"export", "--svg-indent", "abc", "--input", inputPath});
1410+
EXPECT_NE(ret, 0);
1411+
}
1412+
1413+
CLI_TEST(PAGXCliTest, Export_InvalidIndent_OutOfRange) {
1414+
auto inputPath = TestResourcePath("render_basic.pagx");
1415+
auto ret = CallRun(pagx::cli::RunExport,
1416+
{"export", "--svg-indent", "20", "--input", inputPath});
1417+
EXPECT_NE(ret, 0);
1418+
}
1419+
1420+
CLI_TEST(PAGXCliTest, Export_InvalidIndent_Negative) {
1421+
auto inputPath = TestResourcePath("render_basic.pagx");
1422+
auto ret = CallRun(pagx::cli::RunExport,
1423+
{"export", "--svg-indent", "-1", "--input", inputPath});
1424+
EXPECT_NE(ret, 0);
1425+
}
1426+
1427+
CLI_TEST(PAGXCliTest, Export_InvalidIndent_Partial) {
1428+
auto inputPath = TestResourcePath("render_basic.pagx");
1429+
auto ret = CallRun(pagx::cli::RunExport,
1430+
{"export", "--svg-indent", "4abc", "--input", inputPath});
1431+
EXPECT_NE(ret, 0);
1432+
}
1433+
1434+
CLI_TEST(PAGXCliTest, Export_UnexpectedArgument) {
1435+
auto ret = CallRun(pagx::cli::RunExport, {"export", "somefile.pagx"});
1436+
EXPECT_NE(ret, 0);
1437+
}
1438+
1439+
CLI_TEST(PAGXCliTest, Export_NoConvertTextToPath) {
1440+
auto inputPath = TestResourcePath("render_text.pagx");
1441+
auto outputPath = TempDir() + "/ExportSVG_NoConvertText.svg";
1442+
auto ret = CallRun(pagx::cli::RunExport,
1443+
{"export", "--svg-no-convert-text-to-path", "--input", inputPath,
1444+
"--output", outputPath});
1445+
EXPECT_EQ(ret, 0);
1446+
auto output = ReadFile(outputPath);
1447+
EXPECT_NE(output.find("<svg"), std::string::npos);
1448+
}
1449+
1450+
CLI_TEST(PAGXCliTest, Export_DefaultOutput) {
1451+
auto inputPath = CopyToTemp("render_basic.pagx", "ExportDefault.pagx");
1452+
auto ret = CallRun(pagx::cli::RunExport, {"export", "--input", inputPath});
1453+
EXPECT_EQ(ret, 0);
1454+
auto defaultOutput = TempDir() + "/ExportDefault.svg";
1455+
EXPECT_TRUE(std::filesystem::exists(defaultOutput));
1456+
}
1457+
1458+
CLI_TEST(PAGXCliTest, Export_InferFormatFromOutputNoExt) {
1459+
auto inputPath = TestResourcePath("render_basic.pagx");
1460+
auto outputPath = TempDir() + "/ExportInferNoExt";
1461+
auto ret = CallRun(pagx::cli::RunExport,
1462+
{"export", "--input", inputPath, "--output", outputPath});
1463+
EXPECT_EQ(ret, 0);
1464+
auto output = ReadFile(outputPath);
1465+
EXPECT_NE(output.find("<svg"), std::string::npos);
1466+
}
1467+
1468+
CLI_TEST(PAGXCliTest, Export_DefaultOutputNoExtInput) {
1469+
auto inputPath = CopyToTemp("render_basic.pagx", "ExportNoExt");
1470+
auto ret = CallRun(pagx::cli::RunExport, {"export", "--input", inputPath});
1471+
EXPECT_EQ(ret, 0);
1472+
auto defaultOutput = TempDir() + "/ExportNoExt.svg";
1473+
EXPECT_TRUE(std::filesystem::exists(defaultOutput));
1474+
}
1475+
1476+
CLI_TEST(PAGXCliTest, Export_WriteFailure) {
1477+
auto inputPath = TestResourcePath("render_basic.pagx");
1478+
auto outputPath = "/nonexistent_dir_xyz/output.svg";
1479+
auto ret = CallRun(pagx::cli::RunExport,
1480+
{"export", "--input", inputPath, "--output", outputPath});
1481+
EXPECT_NE(ret, 0);
1482+
}
1483+
1484+
CLI_TEST(PAGXCliTest, Import_WriteFailure) {
1485+
auto pagxPath = TestResourcePath("render_basic.pagx");
1486+
auto svgPath = TempDir() + "/ImportSVG_WriteFail.svg";
1487+
auto ret = CallRun(pagx::cli::RunExport, {"export", "--input", pagxPath, "--output", svgPath});
1488+
ASSERT_EQ(ret, 0);
1489+
auto outputPath = "/nonexistent_dir_xyz/output.pagx";
1490+
ret = CallRun(pagx::cli::RunImport,
1491+
{"import", "--input", svgPath, "--output", outputPath});
1492+
EXPECT_NE(ret, 0);
1493+
}
1494+
1495+
CLI_TEST(PAGXCliTest, Import_DefaultOutputNoExtInput) {
1496+
auto pagxPath = TestResourcePath("render_basic.pagx");
1497+
auto svgPath = TempDir() + "/ImportNoExt";
1498+
auto ret = CallRun(pagx::cli::RunExport, {"export", "--input", pagxPath, "--output", svgPath});
1499+
ASSERT_EQ(ret, 0);
1500+
ret = CallRun(pagx::cli::RunImport, {"import", "--format", "svg", "--input", svgPath});
1501+
EXPECT_EQ(ret, 0);
1502+
auto defaultOutput = TempDir() + "/ImportNoExt.pagx";
1503+
EXPECT_TRUE(std::filesystem::exists(defaultOutput));
1504+
}
1505+
13671506
} // namespace pag

0 commit comments

Comments
 (0)