Casting.cpp revision af8e2ef649b90e88f9d595a638279e3bc4892845
1ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif//===---------- llvm/unittest/Support/Casting.cpp - Casting tests --------===//
2ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif//
3ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif//                     The LLVM Compiler Infrastructure
4ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif//
5ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif// This file is distributed under the University of Illinois Open Source
6ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif// License. See LICENSE.TXT for details.
7ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif//
8ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif//===----------------------------------------------------------------------===//
9ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif
10ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif#include "llvm/Support/raw_ostream.h"
11ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif#include "llvm/Support/Debug.h"
12ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif#define DEBUG_CAST_OPERATORS
13ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif#include "llvm/Support/Casting.h"
14ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif
15ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif#include "gtest/gtest.h"
16ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif#include <cstdlib>
17ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif
18ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greifusing namespace llvm;
19ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif
20ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greifnamespace {
21ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif
22ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greifextern bar &B1;
23ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greifextern const bar *B2;
24ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif
25af8e2ef649b90e88f9d595a638279e3bc4892845Gabor GreifTEST(CastingTest, isa) {
26af8e2ef649b90e88f9d595a638279e3bc4892845Gabor Greif  // test various configurations of const
27af8e2ef649b90e88f9d595a638279e3bc4892845Gabor Greif  const bar &B3 = B1;
28af8e2ef649b90e88f9d595a638279e3bc4892845Gabor Greif  const bar *const B4 = B2;
29ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif  EXPECT_TRUE(isa<foo>(B1));
30af8e2ef649b90e88f9d595a638279e3bc4892845Gabor Greif  EXPECT_TRUE(isa<foo>(B2));
31af8e2ef649b90e88f9d595a638279e3bc4892845Gabor Greif  EXPECT_TRUE(isa<foo>(B3));
32af8e2ef649b90e88f9d595a638279e3bc4892845Gabor Greif  EXPECT_TRUE(isa<foo>(B4));
33ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif}
34ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif
35ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greifbar B;
36ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greifbar &B1 = B;
37ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greifconst bar *B2 = &B;
38ee57dae3d8bcb2f3f41eb225bc615045d13d9ddaGabor Greif}  // anonymous namespace
39