brintos

brintos / llvm-project-archived public Read only

0
0
Text · 1.5 KiB · ba7d0d8 Raw
43 lines · cpp
1#include "flang/Evaluate/type.h"2#include "flang/Testing/testing.h"3#include <cstdio>4 5template <int KIND> void testKind() {6  using Type =7      Fortran::evaluate::Type<Fortran::common::TypeCategory::Logical, KIND>;8  TEST(Fortran::evaluate::IsSpecificIntrinsicType<Type>);9  TEST(Type::category == Fortran::common::TypeCategory::Logical);10  TEST(Type::kind == KIND);11  using Value = Fortran::evaluate::Scalar<Type>;12  MATCH(8 * KIND, Value::bits);13  TEST(!Value{}.IsTrue());14  TEST(!Value{false}.IsTrue());15  TEST(Value{true}.IsTrue());16  TEST(Value{false}.NOT().IsTrue());17  TEST(!Value{true}.NOT().IsTrue());18  TEST(!Value{false}.AND(Value{false}).IsTrue());19  TEST(!Value{false}.AND(Value{true}).IsTrue());20  TEST(!Value{true}.AND(Value{false}).IsTrue());21  TEST(Value{true}.AND(Value{true}).IsTrue());22  TEST(!Value{false}.OR(Value{false}).IsTrue());23  TEST(Value{false}.OR(Value{true}).IsTrue());24  TEST(Value{true}.OR(Value{false}).IsTrue());25  TEST(Value{true}.OR(Value{true}).IsTrue());26  TEST(Value{false}.EQV(Value{false}).IsTrue());27  TEST(!Value{false}.EQV(Value{true}).IsTrue());28  TEST(!Value{true}.EQV(Value{false}).IsTrue());29  TEST(Value{true}.EQV(Value{true}).IsTrue());30  TEST(!Value{false}.NEQV(Value{false}).IsTrue());31  TEST(Value{false}.NEQV(Value{true}).IsTrue());32  TEST(Value{true}.NEQV(Value{false}).IsTrue());33  TEST(!Value{true}.NEQV(Value{true}).IsTrue());34}35 36int main() {37  testKind<1>();38  testKind<2>();39  testKind<4>();40  testKind<8>();41  return testing::Complete();42}43