57 lines · cpp
1//===- unittests/Basic/LangOptionsTest.cpp --------------------------------===//2//3// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.4// See https://llvm.org/LICENSE.txt for license information.5// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception6//7//===----------------------------------------------------------------------===//8 9#include "clang/Basic/LangOptions.h"10#include "gtest/gtest.h"11 12using namespace llvm;13using namespace clang;14 15namespace {16TEST(LangOptsTest, CStdLang) {17 LangOptions opts;18 EXPECT_FALSE(opts.getCLangStd());19 opts.GNUMode = 0;20 opts.Digraphs = 1;21 EXPECT_EQ(opts.getCLangStd(), 199409);22 opts.C99 = 1;23 EXPECT_EQ(opts.getCLangStd(), 199901);24 opts.C11 = 1;25 EXPECT_EQ(opts.getCLangStd(), 201112);26 opts.C17 = 1;27 EXPECT_EQ(opts.getCLangStd(), 201710);28 opts.C23 = 1;29 EXPECT_EQ(opts.getCLangStd(), 202311);30 opts.C2y = 1;31 EXPECT_EQ(opts.getCLangStd(), 202400);32 33 EXPECT_FALSE(opts.getCPlusPlusLangStd());34}35 36TEST(LangOptsTest, CppStdLang) {37 LangOptions opts;38 EXPECT_FALSE(opts.getCPlusPlusLangStd());39 opts.CPlusPlus = 1;40 EXPECT_EQ(opts.getCPlusPlusLangStd(), 199711);41 opts.CPlusPlus11 = 1;42 EXPECT_EQ(opts.getCPlusPlusLangStd(), 201103);43 opts.CPlusPlus14 = 1;44 EXPECT_EQ(opts.getCPlusPlusLangStd(), 201402);45 opts.CPlusPlus17 = 1;46 EXPECT_EQ(opts.getCPlusPlusLangStd(), 201703);47 opts.CPlusPlus20 = 1;48 EXPECT_EQ(opts.getCPlusPlusLangStd(), 202002);49 opts.CPlusPlus23 = 1;50 EXPECT_EQ(opts.getCPlusPlusLangStd(), 202302);51 opts.CPlusPlus26 = 1;52 EXPECT_EQ(opts.getCPlusPlusLangStd(), 202400);53 54 EXPECT_FALSE(opts.getCLangStd());55}56} // namespace57