| /* |
| * |
| * Copyright (C) 2017-2020 The Project X-Ray Authors. |
| * |
| * Use of this source code is governed by a ISC-style |
| * license that can be found in the LICENSE file or at |
| * https://opensource.org/licenses/ISC |
| * |
| * SPDX-License-Identifier: ISC |
| */ |
| #include <prjxray/segbits_file_reader.h> |
| |
| #include <map> |
| #include <string> |
| |
| #include <gtest/gtest.h> |
| |
| TEST(SegbitsFileReaderTest, NonExistantFileReturnsNull) { |
| EXPECT_FALSE( |
| prjxray::SegbitsFileReader::InitWithFile("does_not_exist")); |
| } |
| |
| TEST(SegbitsFileReaderTest, ZeroLengthFileYieldsNoItems) { |
| auto segbits_reader = |
| prjxray::SegbitsFileReader::InitWithFile("empty_file"); |
| ASSERT_TRUE(segbits_reader); |
| |
| EXPECT_EQ(segbits_reader->begin(), segbits_reader->end()); |
| } |
| |
| TEST(SegbitsFileReaderTest, FileWithOneEntry) { |
| auto segbits_reader = |
| prjxray::SegbitsFileReader::InitWithFile("one_entry.segbits"); |
| ASSERT_TRUE(segbits_reader); |
| |
| auto begin_iter = segbits_reader->begin(); |
| EXPECT_EQ(begin_iter->tag(), "CLBLL_L.SLICEL_X0.A5FF.ZINI"); |
| EXPECT_EQ(begin_iter->bit(), "31_06"); |
| |
| EXPECT_EQ(++begin_iter, segbits_reader->end()); |
| } |
| |
| TEST(SegbitsFileReaderTest, FileWithOneEntryWithEmptyTag) { |
| auto segbits_reader = prjxray::SegbitsFileReader::InitWithFile( |
| "one_entry_empty_tag.segbits"); |
| ASSERT_TRUE(segbits_reader); |
| |
| auto begin_iter = segbits_reader->begin(); |
| EXPECT_EQ(begin_iter->tag(), ""); |
| EXPECT_EQ(begin_iter->bit(), "31_06"); |
| |
| EXPECT_EQ(++begin_iter, segbits_reader->end()); |
| } |
| |
| TEST(SegbitsFileReaderTest, FileWithOneEntryMissingBit) { |
| auto segbits_reader = prjxray::SegbitsFileReader::InitWithFile( |
| "one_entry_missing_bit.segbits"); |
| ASSERT_TRUE(segbits_reader); |
| |
| auto begin_iter = segbits_reader->begin(); |
| EXPECT_EQ(begin_iter->tag(), "CLBLL_L.SLICEL_X0.A5FF.ZINI"); |
| EXPECT_EQ(begin_iter->bit(), ""); |
| |
| EXPECT_EQ(++begin_iter, segbits_reader->end()); |
| } |
| |
| TEST(SegbitsFileReaderTest, FileWithOneEntryWithExtraWhitespace) { |
| auto segbits_reader = prjxray::SegbitsFileReader::InitWithFile( |
| "one_entry_extra_whitespace.segbits"); |
| ASSERT_TRUE(segbits_reader); |
| |
| auto begin_iter = segbits_reader->begin(); |
| EXPECT_EQ(begin_iter->tag(), "CLBLL_L.SLICEL_X0.A5FF.ZINI"); |
| EXPECT_EQ(begin_iter->bit(), "31_06"); |
| |
| EXPECT_EQ(++begin_iter, segbits_reader->end()); |
| } |
| |
| TEST(SegbitsFileReaderTest, FileWithTwoEntries) { |
| auto segbits_reader = |
| prjxray::SegbitsFileReader::InitWithFile("two_entries.segbits"); |
| ASSERT_TRUE(segbits_reader); |
| |
| auto iter = segbits_reader->begin(); |
| EXPECT_EQ(iter->tag(), "CLBLL_L.SLICEL_X0.A5FF.ZINI"); |
| EXPECT_EQ(iter->bit(), "31_06"); |
| |
| ++iter; |
| EXPECT_EQ(iter->tag(), "CLBLL_L.SLICEL_X0.AFF.ZINI"); |
| EXPECT_EQ(iter->bit(), "31_03"); |
| |
| EXPECT_EQ(++iter, segbits_reader->end()); |
| } |