@@ -1416,6 +1416,132 @@ TEST(TripleTest, Normalization) {
1416
1416
1417
1417
EXPECT_EQ (" x86_64-unknown-linux-gnu" , Triple::normalize (" x86_64-gnu-linux" ));
1418
1418
1419
+ EXPECT_EQ (" a-unknown-unknown" ,
1420
+ Triple::normalize (" a" , Triple::CanonicalForm::THREE_IDENT));
1421
+ EXPECT_EQ (" a-b-unknown" ,
1422
+ Triple::normalize (" a-b" , Triple::CanonicalForm::THREE_IDENT));
1423
+ EXPECT_EQ (" a-b-c" ,
1424
+ Triple::normalize (" a-b-c" , Triple::CanonicalForm::THREE_IDENT));
1425
+ EXPECT_EQ (" a-b-c" ,
1426
+ Triple::normalize (" a-b-c-d" , Triple::CanonicalForm::THREE_IDENT));
1427
+ EXPECT_EQ (" a-b-c" ,
1428
+ Triple::normalize (" a-b-c-d-e" , Triple::CanonicalForm::THREE_IDENT));
1429
+
1430
+ EXPECT_EQ (" a-unknown-unknown-unknown" ,
1431
+ Triple::normalize (" a" , Triple::CanonicalForm::FOUR_IDENT));
1432
+ EXPECT_EQ (" a-b-unknown-unknown" ,
1433
+ Triple::normalize (" a-b" , Triple::CanonicalForm::FOUR_IDENT));
1434
+ EXPECT_EQ (" a-b-c-unknown" ,
1435
+ Triple::normalize (" a-b-c" , Triple::CanonicalForm::FOUR_IDENT));
1436
+ EXPECT_EQ (" a-b-c-d" ,
1437
+ Triple::normalize (" a-b-c-d" , Triple::CanonicalForm::FOUR_IDENT));
1438
+ EXPECT_EQ (" a-b-c-d" ,
1439
+ Triple::normalize (" a-b-c-d-e" , Triple::CanonicalForm::FOUR_IDENT));
1440
+
1441
+ EXPECT_EQ (" a-unknown-unknown-unknown-unknown" ,
1442
+ Triple::normalize (" a" , Triple::CanonicalForm::FIVE_IDENT));
1443
+ EXPECT_EQ (" a-b-unknown-unknown-unknown" ,
1444
+ Triple::normalize (" a-b" , Triple::CanonicalForm::FIVE_IDENT));
1445
+ EXPECT_EQ (" a-b-c-unknown-unknown" ,
1446
+ Triple::normalize (" a-b-c" , Triple::CanonicalForm::FIVE_IDENT));
1447
+ EXPECT_EQ (" a-b-c-d-unknown" ,
1448
+ Triple::normalize (" a-b-c-d" , Triple::CanonicalForm::FIVE_IDENT));
1449
+ EXPECT_EQ (" a-b-c-d-e" ,
1450
+ Triple::normalize (" a-b-c-d-e" , Triple::CanonicalForm::FIVE_IDENT));
1451
+
1452
+ EXPECT_EQ (" i386-b-c-unknown" ,
1453
+ Triple::normalize (" i386-b-c" , Triple::CanonicalForm::FOUR_IDENT));
1454
+ EXPECT_EQ (" i386-b-c-unknown-unknown" ,
1455
+ Triple::normalize (" i386-b-c" , Triple::CanonicalForm::FIVE_IDENT));
1456
+
1457
+ EXPECT_EQ (" i386-a-c-unknown" ,
1458
+ Triple::normalize (" a-i386-c" , Triple::CanonicalForm::FOUR_IDENT));
1459
+ EXPECT_EQ (" i386-a-c-unknown-unknown" ,
1460
+ Triple::normalize (" a-i386-c" , Triple::CanonicalForm::FIVE_IDENT));
1461
+
1462
+ EXPECT_EQ (" i386-a-b-unknown" ,
1463
+ Triple::normalize (" a-b-i386" , Triple::CanonicalForm::FOUR_IDENT));
1464
+ EXPECT_EQ (" i386-a-b-c" ,
1465
+ Triple::normalize (" a-b-c-i386" , Triple::CanonicalForm::FOUR_IDENT));
1466
+
1467
+ EXPECT_EQ (" a-pc-c-unknown" ,
1468
+ Triple::normalize (" a-pc-c" , Triple::CanonicalForm::FOUR_IDENT));
1469
+ EXPECT_EQ (" unknown-pc-b-c" ,
1470
+ Triple::normalize (" pc-b-c" , Triple::CanonicalForm::FOUR_IDENT));
1471
+ EXPECT_EQ (" a-pc-b-unknown" ,
1472
+ Triple::normalize (" a-b-pc" , Triple::CanonicalForm::FOUR_IDENT));
1473
+ EXPECT_EQ (" a-pc-b-c" ,
1474
+ Triple::normalize (" a-b-c-pc" , Triple::CanonicalForm::FOUR_IDENT));
1475
+
1476
+ EXPECT_EQ (" a-b-linux-unknown" ,
1477
+ Triple::normalize (" a-b-linux" , Triple::CanonicalForm::FOUR_IDENT));
1478
+ // We lose `-c` here as expected.
1479
+ EXPECT_EQ (" unknown-unknown-linux-b" ,
1480
+ Triple::normalize (" linux-b-c" , Triple::CanonicalForm::FOUR_IDENT));
1481
+ EXPECT_EQ (" a-unknown-linux-c" ,
1482
+ Triple::normalize (" a-linux-c" , Triple::CanonicalForm::FOUR_IDENT));
1483
+
1484
+ EXPECT_EQ (" i386-pc-a-unknown" ,
1485
+ Triple::normalize (" a-pc-i386" , Triple::CanonicalForm::FOUR_IDENT));
1486
+ EXPECT_EQ (" i386-pc-unknown-unknown" ,
1487
+ Triple::normalize (" -pc-i386" , Triple::CanonicalForm::FOUR_IDENT));
1488
+ EXPECT_EQ (" unknown-pc-linux-c" ,
1489
+ Triple::normalize (" linux-pc-c" , Triple::CanonicalForm::FOUR_IDENT));
1490
+ EXPECT_EQ (" unknown-pc-linux-unknown" ,
1491
+ Triple::normalize (" linux-pc-" , Triple::CanonicalForm::FOUR_IDENT));
1492
+
1493
+ EXPECT_EQ (" i386-unknown-unknown-unknown" ,
1494
+ Triple::normalize (" i386" , Triple::CanonicalForm::FOUR_IDENT));
1495
+ EXPECT_EQ (" unknown-pc-unknown-unknown" ,
1496
+ Triple::normalize (" pc" , Triple::CanonicalForm::FOUR_IDENT));
1497
+ EXPECT_EQ (" unknown-unknown-linux-unknown" ,
1498
+ Triple::normalize (" linux" , Triple::CanonicalForm::FOUR_IDENT));
1499
+
1500
+ EXPECT_EQ (
1501
+ " x86_64-unknown-linux-gnu" ,
1502
+ Triple::normalize (" x86_64-gnu-linux" , Triple::CanonicalForm::FOUR_IDENT));
1503
+
1504
+ EXPECT_EQ (" i386-a-b-unknown-unknown" ,
1505
+ Triple::normalize (" a-b-i386" , Triple::CanonicalForm::FIVE_IDENT));
1506
+ EXPECT_EQ (" i386-a-b-c-unknown" ,
1507
+ Triple::normalize (" a-b-c-i386" , Triple::CanonicalForm::FIVE_IDENT));
1508
+
1509
+ EXPECT_EQ (" a-pc-c-unknown-unknown" ,
1510
+ Triple::normalize (" a-pc-c" , Triple::CanonicalForm::FIVE_IDENT));
1511
+ EXPECT_EQ (" unknown-pc-b-c-unknown" ,
1512
+ Triple::normalize (" pc-b-c" , Triple::CanonicalForm::FIVE_IDENT));
1513
+ EXPECT_EQ (" a-pc-b-unknown-unknown" ,
1514
+ Triple::normalize (" a-b-pc" , Triple::CanonicalForm::FIVE_IDENT));
1515
+ EXPECT_EQ (" a-pc-b-c-unknown" ,
1516
+ Triple::normalize (" a-b-c-pc" , Triple::CanonicalForm::FIVE_IDENT));
1517
+
1518
+ EXPECT_EQ (" a-b-linux-unknown-unknown" ,
1519
+ Triple::normalize (" a-b-linux" , Triple::CanonicalForm::FIVE_IDENT));
1520
+ EXPECT_EQ (" unknown-unknown-linux-b-c" ,
1521
+ Triple::normalize (" linux-b-c" , Triple::CanonicalForm::FIVE_IDENT));
1522
+ EXPECT_EQ (" a-unknown-linux-c-unknown" ,
1523
+ Triple::normalize (" a-linux-c" , Triple::CanonicalForm::FIVE_IDENT));
1524
+
1525
+ EXPECT_EQ (" i386-pc-a-unknown-unknown" ,
1526
+ Triple::normalize (" a-pc-i386" , Triple::CanonicalForm::FIVE_IDENT));
1527
+ EXPECT_EQ (" i386-pc-unknown-unknown-unknown" ,
1528
+ Triple::normalize (" -pc-i386" , Triple::CanonicalForm::FIVE_IDENT));
1529
+ EXPECT_EQ (" unknown-pc-linux-c-unknown" ,
1530
+ Triple::normalize (" linux-pc-c" , Triple::CanonicalForm::FIVE_IDENT));
1531
+ EXPECT_EQ (" unknown-pc-linux-unknown-unknown" ,
1532
+ Triple::normalize (" linux-pc-" , Triple::CanonicalForm::FIVE_IDENT));
1533
+
1534
+ EXPECT_EQ (" i386-unknown-unknown-unknown-unknown" ,
1535
+ Triple::normalize (" i386" , Triple::CanonicalForm::FIVE_IDENT));
1536
+ EXPECT_EQ (" unknown-pc-unknown-unknown-unknown" ,
1537
+ Triple::normalize (" pc" , Triple::CanonicalForm::FIVE_IDENT));
1538
+ EXPECT_EQ (" unknown-unknown-linux-unknown-unknown" ,
1539
+ Triple::normalize (" linux" , Triple::CanonicalForm::FIVE_IDENT));
1540
+
1541
+ EXPECT_EQ (
1542
+ " x86_64-unknown-linux-gnu-unknown" ,
1543
+ Triple::normalize (" x86_64-gnu-linux" , Triple::CanonicalForm::FIVE_IDENT));
1544
+
1419
1545
// Check that normalizing a permutated set of valid components returns a
1420
1546
// triple with the unpermuted components.
1421
1547
//
0 commit comments