/* * libfud * Copyright 2024 Dominick Allen * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include "fud_config.hpp" #include "libfud.hpp" #include "gtest/gtest.h" #include namespace fud { TEST(FudTest, FudFud) { FUD fudInfo{fud()}; EXPECT_EQ(fudInfo.major, FudVersionMajor); EXPECT_EQ(fudInfo.minor, FudVersionMinor); EXPECT_EQ(fudInfo.patch, FudVersionPatch); auto compareResult = compareMem( fudInfo.revision.data(), fudInfo.revision.size(), // NOLINTNEXTLINE(cppcoreguidelines-pro-bounds-array-to-pointer-decay) FudGitHash, fudInfo.revision.size() - 1); ASSERT_TRUE(compareResult.isOkay()); EXPECT_EQ(compareResult.getOkay(), 0); EXPECT_EQ(fudInfo.revision[fudInfo.revision.size() - 1], '\0'); } TEST(FudTest, GetEnv) { constexpr const char* testVarName = "FUD_TEST_VAR"; constexpr const char* testVarValue = "FUD_TEST_VALUE"; ASSERT_EQ(unsetenv(testVarName), 0); auto fudVarResult = getEnv(nullptr); ASSERT_TRUE(fudVarResult.isError()); ASSERT_EQ(fudVarResult.getError(), FudStatus::NullPointer); fudVarResult = std::move(getEnv(testVarName)); ASSERT_TRUE(fudVarResult.isOkay()); ASSERT_TRUE(fudVarResult.getOkay().isNone()); ASSERT_EQ(setenv(testVarName, testVarValue, 1), 0); ASSERT_NE(getenv(testVarName), nullptr); ASSERT_STREQ(getenv(testVarName), testVarValue); fudVarResult = getEnv(testVarName); ASSERT_TRUE(fudVarResult.isOkay()); auto fudVar{fudVarResult.takeOkay()}; ASSERT_TRUE(fudVar.hasValue()); ASSERT_STREQ(fudVar.value().c_str(), testVarValue); } } // namespace fud