TripleTest.cpp revision a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1
123e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar//===----------- Triple.cpp - Triple unit tests ---------------------------===//
223e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar//
323e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar//                     The LLVM Compiler Infrastructure
423e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar//
523e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar// This file is distributed under the University of Illinois Open Source
623e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar// License. See LICENSE.TXT for details.
723e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar//
823e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar//===----------------------------------------------------------------------===//
923e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
1023e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar#include "gtest/gtest.h"
1123e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar#include "llvm/ADT/Triple.h"
1223e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
1323e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbarusing namespace llvm;
1423e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
1523e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbarnamespace {
1623e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
1723e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel DunbarTEST(TripleTest, BasicParsing) {
1823e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  Triple T;
1923e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
2023e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T = Triple("");
21a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getArchName().str());
22a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getVendorName().str());
23a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getOSName().str());
24a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getEnvironmentName().str());
2523e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
2623e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T = Triple("-");
27a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getArchName().str());
28a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getVendorName().str());
29a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getOSName().str());
30a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getEnvironmentName().str());
3123e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
3223e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T = Triple("--");
33a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getArchName().str());
34a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getVendorName().str());
35a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getOSName().str());
36a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getEnvironmentName().str());
3723e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
3823e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T = Triple("---");
39a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getArchName().str());
40a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getVendorName().str());
41a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getOSName().str());
42a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getEnvironmentName().str());
4323e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
4423e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T = Triple("----");
45a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getArchName().str());
46a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getVendorName().str());
47a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getOSName().str());
48a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("-", T.getEnvironmentName().str());
4923e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
5023e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T = Triple("a");
51a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("a", T.getArchName().str());
52a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getVendorName().str());
53a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getOSName().str());
54a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getEnvironmentName().str());
5523e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
5623e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T = Triple("a-b");
57a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("a", T.getArchName().str());
58a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("b", T.getVendorName().str());
59a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getOSName().str());
60a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getEnvironmentName().str());
6123e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
6223e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T = Triple("a-b-c");
63a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("a", T.getArchName().str());
64a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("b", T.getVendorName().str());
65a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("c", T.getOSName().str());
66a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("", T.getEnvironmentName().str());
6723e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
6823e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T = Triple("a-b-c-d");
69a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("a", T.getArchName().str());
70a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("b", T.getVendorName().str());
71a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("c", T.getOSName().str());
72a14d225ef4d3d8bd8ec9ec913246d1fb47d2edc1Daniel Dunbar  EXPECT_EQ("d", T.getEnvironmentName().str());
7323e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar}
7423e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
7523e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel DunbarTEST(TripleTest, ParsedIDs) {
7623e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  Triple T;
7723e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
7823e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T = Triple("i386-apple-darwin");
79efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::x86, T.getArch());
80efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::Apple, T.getVendor());
81efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::Darwin, T.getOS());
8223e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
8323e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T = Triple("x86_64-pc-linux-gnu");
84efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::x86_64, T.getArch());
85efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::PC, T.getVendor());
86efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::Linux, T.getOS());
8723e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
8823e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T = Triple("powerpc-dunno-notsure");
89efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::ppc, T.getArch());
90efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
91efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::UnknownOS, T.getOS());
9223e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
9323e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T = Triple("huh");
94efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::UnknownArch, T.getArch());
9523e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar}
9623e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
9723e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel DunbarTEST(TripleTest, MutateName) {
9823e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  Triple T;
99efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::UnknownArch, T.getArch());
100efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
101efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::UnknownOS, T.getOS());
10223e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
10323e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T.setArchName("i386");
104efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::x86, T.getArch());
105efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ("i386--", T.getTriple());
10623e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
10723e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T.setVendorName("pc");
108efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::x86, T.getArch());
109efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::PC, T.getVendor());
110efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ("i386-pc-", T.getTriple());
11123e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
11223e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T.setOSName("linux");
113efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::x86, T.getArch());
114efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::PC, T.getVendor());
115efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::Linux, T.getOS());
116efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ("i386-pc-linux", T.getTriple());
11723e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
11823e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T.setEnvironmentName("gnu");
119efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::x86, T.getArch());
120efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::PC, T.getVendor());
121efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::Linux, T.getOS());
122efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ("i386-pc-linux-gnu", T.getTriple());
12323e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
12423e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T.setOSName("freebsd");
125efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::x86, T.getArch());
126efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::PC, T.getVendor());
127efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::FreeBSD, T.getOS());
128efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ("i386-pc-freebsd-gnu", T.getTriple());
12923e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
13023e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar  T.setOSAndEnvironmentName("darwin");
131efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::x86, T.getArch());
132efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::PC, T.getVendor());
133efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ(Triple::Darwin, T.getOS());
134efee4ee46e5cc8f108391a33f2119891531989c6Misha Brukman  EXPECT_EQ("i386-pc-darwin", T.getTriple());
13523e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar}
13623e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar
13723e97b05da7b31ed97e5ccc6330670da0173ca2eDaniel Dunbar}
138