@@ -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