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