mirror of
https://github.com/llvm/llvm-project.git
synced 2025-04-27 03:06:05 +00:00

This reverts commit 6403287eff71a3d6f6c862346d6ed3f0f000eb70. This is failing on all but 1 of Linaro's flang builders. CMake Error at /home/tcwg-buildbot/worker/clang-aarch64-full-2stage/llvm/flang-rt/unittests/CMakeLists.txt:37 (message): Target llvm_gtest not found.
57 lines
2.0 KiB
C++
57 lines
2.0 KiB
C++
//===-- flang/unittests/Runtime/LogicalFormatTest.cpp -----------*- C++ -*-===//
|
|
//
|
|
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
|
|
// See https://llvm.org/LICENSE.txt for license information.
|
|
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
|
|
//
|
|
//===----------------------------------------------------------------------===//
|
|
|
|
#include "CrashHandlerFixture.h"
|
|
#include "flang/Runtime/descriptor.h"
|
|
#include "flang/Runtime/io-api.h"
|
|
#include <algorithm>
|
|
#include <array>
|
|
#include <cstring>
|
|
#include <gtest/gtest.h>
|
|
#include <tuple>
|
|
|
|
using namespace Fortran::runtime;
|
|
using namespace Fortran::runtime::io;
|
|
|
|
TEST(IOApiTests, LogicalFormatTest) {
|
|
static constexpr int bufferSize{29};
|
|
char buffer[bufferSize];
|
|
|
|
// Create format for all types and values to be written
|
|
const char *format{"(L,L3,I3,L2,L2,I3,L2,A3,L2,L,F4.1,L2)"};
|
|
auto cookie{IONAME(BeginInternalFormattedOutput)(
|
|
buffer, bufferSize, format, std::strlen(format))};
|
|
|
|
// Write string, integer, and logical values to buffer
|
|
IONAME(OutputLogical)(cookie, true);
|
|
IONAME(OutputLogical)(cookie, false);
|
|
IONAME(OutputInteger64)(cookie, 6);
|
|
IONAME(OutputInteger32)(cookie, 22);
|
|
IONAME(OutputInteger32)(cookie, 0);
|
|
IONAME(OutputInteger32)(cookie, -2);
|
|
IONAME(OutputCharacter)(cookie, "ABC", 3);
|
|
IONAME(OutputCharacter)(cookie, "AB", 2);
|
|
IONAME(OutputReal64)(cookie, 0.0);
|
|
IONAME(OutputCharacter)(cookie, "", 0);
|
|
IONAME(OutputReal32)(cookie, 2.3);
|
|
IONAME(OutputReal32)(cookie, 2.3);
|
|
|
|
// Ensure IO succeeded
|
|
auto status{IONAME(EndIoStatement)(cookie)};
|
|
ASSERT_EQ(status, 0) << "logical format: '" << format << "' failed, status "
|
|
<< static_cast<int>(status);
|
|
|
|
// Ensure final buffer matches expected string output
|
|
static const std::string expect{"T F 6 T F -2 T AB FF 2.3 T"};
|
|
|
|
// expect.size() == bufferSize - 1
|
|
std::string bufferStr = std::string(buffer, bufferSize - 1);
|
|
ASSERT_TRUE(expect == bufferStr)
|
|
<< "Expected '" << expect << "', got '" << bufferStr << "'";
|
|
}
|