TripleTest.cpp revision efee4ee46e5cc8f108391a33f2119891531989c6
1//===----------- Triple.cpp - Triple unit tests ---------------------------===//
2//
3//                     The LLVM Compiler Infrastructure
4//
5// This file is distributed under the University of Illinois Open Source
6// License. See LICENSE.TXT for details.
7//
8//===----------------------------------------------------------------------===//
9
10#include "gtest/gtest.h"
11#include "llvm/ADT/Triple.h"
12
13using namespace llvm;
14
15namespace {
16
17TEST(TripleTest, BasicParsing) {
18  Triple T;
19
20  T = Triple("");
21  EXPECT_EQ("", T.getArchName());
22  EXPECT_EQ("", T.getVendorName());
23  EXPECT_EQ("", T.getOSName());
24  EXPECT_EQ("", T.getEnvironmentName());
25
26  T = Triple("-");
27  EXPECT_EQ("", T.getArchName());
28  EXPECT_EQ("", T.getVendorName());
29  EXPECT_EQ("", T.getOSName());
30  EXPECT_EQ("", T.getEnvironmentName());
31
32  T = Triple("--");
33  EXPECT_EQ("", T.getArchName());
34  EXPECT_EQ("", T.getVendorName());
35  EXPECT_EQ("", T.getOSName());
36  EXPECT_EQ("", T.getEnvironmentName());
37
38  T = Triple("---");
39  EXPECT_EQ("", T.getArchName());
40  EXPECT_EQ("", T.getVendorName());
41  EXPECT_EQ("", T.getOSName());
42  EXPECT_EQ("", T.getEnvironmentName());
43
44  T = Triple("----");
45  EXPECT_EQ("", T.getArchName());
46  EXPECT_EQ("", T.getVendorName());
47  EXPECT_EQ("", T.getOSName());
48  EXPECT_EQ("-", T.getEnvironmentName());
49
50  T = Triple("a");
51  EXPECT_EQ("a", T.getArchName());
52  EXPECT_EQ("", T.getVendorName());
53  EXPECT_EQ("", T.getOSName());
54  EXPECT_EQ("", T.getEnvironmentName());
55
56  T = Triple("a-b");
57  EXPECT_EQ("a", T.getArchName());
58  EXPECT_EQ("b", T.getVendorName());
59  EXPECT_EQ("", T.getOSName());
60  EXPECT_EQ("", T.getEnvironmentName());
61
62  T = Triple("a-b-c");
63  EXPECT_EQ("a", T.getArchName());
64  EXPECT_EQ("b", T.getVendorName());
65  EXPECT_EQ("c", T.getOSName());
66  EXPECT_EQ("", T.getEnvironmentName());
67
68  T = Triple("a-b-c-d");
69  EXPECT_EQ("a", T.getArchName());
70  EXPECT_EQ("b", T.getVendorName());
71  EXPECT_EQ("c", T.getOSName());
72  EXPECT_EQ("d", T.getEnvironmentName());
73}
74
75TEST(TripleTest, ParsedIDs) {
76  Triple T;
77
78  T = Triple("i386-apple-darwin");
79  EXPECT_EQ(Triple::x86, T.getArch());
80  EXPECT_EQ(Triple::Apple, T.getVendor());
81  EXPECT_EQ(Triple::Darwin, T.getOS());
82
83  T = Triple("x86_64-pc-linux-gnu");
84  EXPECT_EQ(Triple::x86_64, T.getArch());
85  EXPECT_EQ(Triple::PC, T.getVendor());
86  EXPECT_EQ(Triple::Linux, T.getOS());
87
88  T = Triple("powerpc-dunno-notsure");
89  EXPECT_EQ(Triple::ppc, T.getArch());
90  EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
91  EXPECT_EQ(Triple::UnknownOS, T.getOS());
92
93  T = Triple("huh");
94  EXPECT_EQ(Triple::UnknownArch, T.getArch());
95}
96
97TEST(TripleTest, MutateName) {
98  Triple T;
99  EXPECT_EQ(Triple::UnknownArch, T.getArch());
100  EXPECT_EQ(Triple::UnknownVendor, T.getVendor());
101  EXPECT_EQ(Triple::UnknownOS, T.getOS());
102
103  T.setArchName("i386");
104  EXPECT_EQ(Triple::x86, T.getArch());
105  EXPECT_EQ("i386--", T.getTriple());
106
107  T.setVendorName("pc");
108  EXPECT_EQ(Triple::x86, T.getArch());
109  EXPECT_EQ(Triple::PC, T.getVendor());
110  EXPECT_EQ("i386-pc-", T.getTriple());
111
112  T.setOSName("linux");
113  EXPECT_EQ(Triple::x86, T.getArch());
114  EXPECT_EQ(Triple::PC, T.getVendor());
115  EXPECT_EQ(Triple::Linux, T.getOS());
116  EXPECT_EQ("i386-pc-linux", T.getTriple());
117
118  T.setEnvironmentName("gnu");
119  EXPECT_EQ(Triple::x86, T.getArch());
120  EXPECT_EQ(Triple::PC, T.getVendor());
121  EXPECT_EQ(Triple::Linux, T.getOS());
122  EXPECT_EQ("i386-pc-linux-gnu", T.getTriple());
123
124  T.setOSName("freebsd");
125  EXPECT_EQ(Triple::x86, T.getArch());
126  EXPECT_EQ(Triple::PC, T.getVendor());
127  EXPECT_EQ(Triple::FreeBSD, T.getOS());
128  EXPECT_EQ("i386-pc-freebsd-gnu", T.getTriple());
129
130  T.setOSAndEnvironmentName("darwin");
131  EXPECT_EQ(Triple::x86, T.getArch());
132  EXPECT_EQ(Triple::PC, T.getVendor());
133  EXPECT_EQ(Triple::Darwin, T.getOS());
134  EXPECT_EQ("i386-pc-darwin", T.getTriple());
135}
136
137}
138