| /* | 
 |  * | 
 |  * 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()); | 
 | } |