@@ -1238,6 +1238,132 @@ TEST(TripleTest, Normalization) {
1238
1238
1239
1239
EXPECT_EQ (" x86_64-unknown-linux-gnu" , Triple::normalize (" x86_64-gnu-linux" ));
1240
1240
1241
+ EXPECT_EQ (" a-unknown-unknown" ,
1242
+ Triple::normalize (" a" , Triple::CanonicalForm::THREE_IDENT));
1243
+ EXPECT_EQ (" a-b-unknown" ,
1244
+ Triple::normalize (" a-b" , Triple::CanonicalForm::THREE_IDENT));
1245
+ EXPECT_EQ (" a-b-c" ,
1246
+ Triple::normalize (" a-b-c" , Triple::CanonicalForm::THREE_IDENT));
1247
+ EXPECT_EQ (" a-b-c" ,
1248
+ Triple::normalize (" a-b-c-d" , Triple::CanonicalForm::THREE_IDENT));
1249
+ EXPECT_EQ (" a-b-c" ,
1250
+ Triple::normalize (" a-b-c-d-e" , Triple::CanonicalForm::THREE_IDENT));
1251
+
1252
+ EXPECT_EQ (" a-unknown-unknown-unknown" ,
1253
+ Triple::normalize (" a" , Triple::CanonicalForm::FOUR_IDENT));
1254
+ EXPECT_EQ (" a-b-unknown-unknown" ,
1255
+ Triple::normalize (" a-b" , Triple::CanonicalForm::FOUR_IDENT));
1256
+ EXPECT_EQ (" a-b-c-unknown" ,
1257
+ Triple::normalize (" a-b-c" , Triple::CanonicalForm::FOUR_IDENT));
1258
+ EXPECT_EQ (" a-b-c-d" ,
1259
+ Triple::normalize (" a-b-c-d" , Triple::CanonicalForm::FOUR_IDENT));
1260
+ EXPECT_EQ (" a-b-c-d" ,
1261
+ Triple::normalize (" a-b-c-d-e" , Triple::CanonicalForm::FOUR_IDENT));
1262
+
1263
+ EXPECT_EQ (" a-unknown-unknown-unknown-unknown" ,
1264
+ Triple::normalize (" a" , Triple::CanonicalForm::FIVE_IDENT));
1265
+ EXPECT_EQ (" a-b-unknown-unknown-unknown" ,
1266
+ Triple::normalize (" a-b" , Triple::CanonicalForm::FIVE_IDENT));
1267
+ EXPECT_EQ (" a-b-c-unknown-unknown" ,
1268
+ Triple::normalize (" a-b-c" , Triple::CanonicalForm::FIVE_IDENT));
1269
+ EXPECT_EQ (" a-b-c-d-unknown" ,
1270
+ Triple::normalize (" a-b-c-d" , Triple::CanonicalForm::FIVE_IDENT));
1271
+ EXPECT_EQ (" a-b-c-d-e" ,
1272
+ Triple::normalize (" a-b-c-d-e" , Triple::CanonicalForm::FIVE_IDENT));
1273
+
1274
+ EXPECT_EQ (" i386-b-c-unknown" ,
1275
+ Triple::normalize (" i386-b-c" , Triple::CanonicalForm::FOUR_IDENT));
1276
+ EXPECT_EQ (" i386-b-c-unknown-unknown" ,
1277
+ Triple::normalize (" i386-b-c" , Triple::CanonicalForm::FIVE_IDENT));
1278
+
1279
+ EXPECT_EQ (" i386-a-c-unknown" ,
1280
+ Triple::normalize (" a-i386-c" , Triple::CanonicalForm::FOUR_IDENT));
1281
+ EXPECT_EQ (" i386-a-c-unknown-unknown" ,
1282
+ Triple::normalize (" a-i386-c" , Triple::CanonicalForm::FIVE_IDENT));
1283
+
1284
+ EXPECT_EQ (" i386-a-b-unknown" ,
1285
+ Triple::normalize (" a-b-i386" , Triple::CanonicalForm::FOUR_IDENT));
1286
+ EXPECT_EQ (" i386-a-b-c" ,
1287
+ Triple::normalize (" a-b-c-i386" , Triple::CanonicalForm::FOUR_IDENT));
1288
+
1289
+ EXPECT_EQ (" a-pc-c-unknown" ,
1290
+ Triple::normalize (" a-pc-c" , Triple::CanonicalForm::FOUR_IDENT));
1291
+ EXPECT_EQ (" unknown-pc-b-c" ,
1292
+ Triple::normalize (" pc-b-c" , Triple::CanonicalForm::FOUR_IDENT));
1293
+ EXPECT_EQ (" a-pc-b-unknown" ,
1294
+ Triple::normalize (" a-b-pc" , Triple::CanonicalForm::FOUR_IDENT));
1295
+ EXPECT_EQ (" a-pc-b-c" ,
1296
+ Triple::normalize (" a-b-c-pc" , Triple::CanonicalForm::FOUR_IDENT));
1297
+
1298
+ EXPECT_EQ (" a-b-linux-unknown" ,
1299
+ Triple::normalize (" a-b-linux" , Triple::CanonicalForm::FOUR_IDENT));
1300
+ // We lose `-c` here as expected.
1301
+ EXPECT_EQ (" unknown-unknown-linux-b" ,
1302
+ Triple::normalize (" linux-b-c" , Triple::CanonicalForm::FOUR_IDENT));
1303
+ EXPECT_EQ (" a-unknown-linux-c" ,
1304
+ Triple::normalize (" a-linux-c" , Triple::CanonicalForm::FOUR_IDENT));
1305
+
1306
+ EXPECT_EQ (" i386-pc-a-unknown" ,
1307
+ Triple::normalize (" a-pc-i386" , Triple::CanonicalForm::FOUR_IDENT));
1308
+ EXPECT_EQ (" i386-pc-unknown-unknown" ,
1309
+ Triple::normalize (" -pc-i386" , Triple::CanonicalForm::FOUR_IDENT));
1310
+ EXPECT_EQ (" unknown-pc-linux-c" ,
1311
+ Triple::normalize (" linux-pc-c" , Triple::CanonicalForm::FOUR_IDENT));
1312
+ EXPECT_EQ (" unknown-pc-linux-unknown" ,
1313
+ Triple::normalize (" linux-pc-" , Triple::CanonicalForm::FOUR_IDENT));
1314
+
1315
+ EXPECT_EQ (" i386-unknown-unknown-unknown" ,
1316
+ Triple::normalize (" i386" , Triple::CanonicalForm::FOUR_IDENT));
1317
+ EXPECT_EQ (" unknown-pc-unknown-unknown" ,
1318
+ Triple::normalize (" pc" , Triple::CanonicalForm::FOUR_IDENT));
1319
+ EXPECT_EQ (" unknown-unknown-linux-unknown" ,
1320
+ Triple::normalize (" linux" , Triple::CanonicalForm::FOUR_IDENT));
1321
+
1322
+ EXPECT_EQ (
1323
+ " x86_64-unknown-linux-gnu" ,
1324
+ Triple::normalize (" x86_64-gnu-linux" , Triple::CanonicalForm::FOUR_IDENT));
1325
+
1326
+ EXPECT_EQ (" i386-a-b-unknown-unknown" ,
1327
+ Triple::normalize (" a-b-i386" , Triple::CanonicalForm::FIVE_IDENT));
1328
+ EXPECT_EQ (" i386-a-b-c-unknown" ,
1329
+ Triple::normalize (" a-b-c-i386" , Triple::CanonicalForm::FIVE_IDENT));
1330
+
1331
+ EXPECT_EQ (" a-pc-c-unknown-unknown" ,
1332
+ Triple::normalize (" a-pc-c" , Triple::CanonicalForm::FIVE_IDENT));
1333
+ EXPECT_EQ (" unknown-pc-b-c-unknown" ,
1334
+ Triple::normalize (" pc-b-c" , Triple::CanonicalForm::FIVE_IDENT));
1335
+ EXPECT_EQ (" a-pc-b-unknown-unknown" ,
1336
+ Triple::normalize (" a-b-pc" , Triple::CanonicalForm::FIVE_IDENT));
1337
+ EXPECT_EQ (" a-pc-b-c-unknown" ,
1338
+ Triple::normalize (" a-b-c-pc" , Triple::CanonicalForm::FIVE_IDENT));
1339
+
1340
+ EXPECT_EQ (" a-b-linux-unknown-unknown" ,
1341
+ Triple::normalize (" a-b-linux" , Triple::CanonicalForm::FIVE_IDENT));
1342
+ EXPECT_EQ (" unknown-unknown-linux-b-c" ,
1343
+ Triple::normalize (" linux-b-c" , Triple::CanonicalForm::FIVE_IDENT));
1344
+ EXPECT_EQ (" a-unknown-linux-c-unknown" ,
1345
+ Triple::normalize (" a-linux-c" , Triple::CanonicalForm::FIVE_IDENT));
1346
+
1347
+ EXPECT_EQ (" i386-pc-a-unknown-unknown" ,
1348
+ Triple::normalize (" a-pc-i386" , Triple::CanonicalForm::FIVE_IDENT));
1349
+ EXPECT_EQ (" i386-pc-unknown-unknown-unknown" ,
1350
+ Triple::normalize (" -pc-i386" , Triple::CanonicalForm::FIVE_IDENT));
1351
+ EXPECT_EQ (" unknown-pc-linux-c-unknown" ,
1352
+ Triple::normalize (" linux-pc-c" , Triple::CanonicalForm::FIVE_IDENT));
1353
+ EXPECT_EQ (" unknown-pc-linux-unknown-unknown" ,
1354
+ Triple::normalize (" linux-pc-" , Triple::CanonicalForm::FIVE_IDENT));
1355
+
1356
+ EXPECT_EQ (" i386-unknown-unknown-unknown-unknown" ,
1357
+ Triple::normalize (" i386" , Triple::CanonicalForm::FIVE_IDENT));
1358
+ EXPECT_EQ (" unknown-pc-unknown-unknown-unknown" ,
1359
+ Triple::normalize (" pc" , Triple::CanonicalForm::FIVE_IDENT));
1360
+ EXPECT_EQ (" unknown-unknown-linux-unknown-unknown" ,
1361
+ Triple::normalize (" linux" , Triple::CanonicalForm::FIVE_IDENT));
1362
+
1363
+ EXPECT_EQ (
1364
+ " x86_64-unknown-linux-gnu-unknown" ,
1365
+ Triple::normalize (" x86_64-gnu-linux" , Triple::CanonicalForm::FIVE_IDENT));
1366
+
1241
1367
// Check that normalizing a permutated set of valid components returns a
1242
1368
// triple with the unpermuted components.
1243
1369
//
0 commit comments