1 //===- AsmStreamerTest.cpp - Triple unit tests ----------------------------===//
3 // The LLVM Compiler Infrastructure
5 // This file is distributed under the University of Illinois Open Source
6 // License. See LICENSE.TXT for details.
8 //===----------------------------------------------------------------------===//
10 #include "gtest/gtest.h"
11 #include "llvm/MC/MCContext.h"
12 #include "llvm/MC/MCStreamer.h"
13 #include "llvm/MC/MCValue.h"
14 #include "llvm/Support/raw_ostream.h"
20 class StringAsmStreamer {
22 raw_string_ostream OS;
27 StringAsmStreamer() : OS(Str), Streamer(createAsmStreamer(Context, OS)) {}
28 ~StringAsmStreamer() {
32 MCContext &getContext() { return Context; }
33 MCStreamer &getStreamer() { return *Streamer; }
35 const std::string &getString() {
41 TEST(AsmStreamer, EmptyOutput) {
43 EXPECT_EQ(S.getString(), "");
46 TEST(AsmStreamer, Sections) {
48 MCSection *Sec0 = S.getContext().GetSection("foo");
49 S.getStreamer().SwitchSection(Sec0);
50 EXPECT_EQ(S.getString(), ".section foo\n");
53 TEST(AsmStreamer, Values) {
55 MCSection *Sec0 = S.getContext().GetSection("foo");
56 MCSymbol *A = S.getContext().CreateSymbol("a");
57 MCSymbol *B = S.getContext().CreateSymbol("b");
58 S.getStreamer().SwitchSection(Sec0);
59 S.getStreamer().EmitLabel(A);
60 S.getStreamer().EmitLabel(B);
61 S.getStreamer().EmitValue(MCValue::get(A, B, 10), 1);
62 S.getStreamer().EmitValue(MCValue::get(A, B, 10), 2);
63 S.getStreamer().EmitValue(MCValue::get(A, B, 10), 4);
64 S.getStreamer().EmitValue(MCValue::get(A, B, 10), 8);
65 EXPECT_EQ(S.getString(), ".section foo\n\