test: Fix test failures after master merge

Update test code to match API changes from upstream master:

- TestGraph.cc: Fix makeScenes() call to pass reference instead of pointer
- TestLibertyClasses.cc: Fix ScaleFactorType wire_res/wire_cap name mapping;
  fix TablePtr usage by calling .get() where const TableModel* is expected
- TestLibertyClasses.cc: Update liberty_read_nangate.ok for new timing arc output
- TestPower.cc: Replace PwrActivityOrigin::defaulted with ::unknown;
  fix isSet() expectations (unknown origin returns false)
- TestSdcClasses.cc, TestSdf.cc, TestUtil.cc, TestSpice.cc:
  Fix RiseFall::to_string() expected values from short form ("^"/"v")
  to long form ("rise"/"fall")
- TestUtil.cc: Remove tests for deleted StringVector/split/TokenParser
  and StringSet::deleteContents (removed from master)
- TestSpice.cc: Replace StdStringSeq with StringSeq
- helpers.tcl: Use pwd-based result_dir so module tests write results
  to their own test/results/ directory
- verilog_bus.ok: Update golden file for new port ordering from master

Signed-off-by: Jaehyun Kim <[email protected]>
This commit is contained in:
Jaehyun Kim
2026-03-11 10:16:27 +09:00
parent d4ad9312ea
commit a5f8e9c3ab
10 changed files with 704 additions and 252 deletions
+4 -163
View File
@@ -9,13 +9,11 @@
#include "MinMax.hh"
#include "PatternMatch.hh"
#include "StringUtil.hh"
#include "StringSet.hh"
#include "RiseFallMinMax.hh"
#include "RiseFallValues.hh"
#include "Report.hh"
#include "ReportStd.hh"
#include "Error.hh"
#include "TokenParser.hh"
#include "Debug.hh"
#include "Machine.hh"
#include "DispatchQueue.hh"
@@ -204,35 +202,6 @@ TEST(StringUtilTest, IsDigitsFalse)
EXPECT_TRUE(isDigits(""));
}
// split tests
TEST(StringUtilTest, SplitBasic)
{
StringVector tokens;
split("one,two,three", ",", tokens);
ASSERT_EQ(tokens.size(), 3u);
EXPECT_EQ(tokens[0], "one");
EXPECT_EQ(tokens[1], "two");
EXPECT_EQ(tokens[2], "three");
}
TEST(StringUtilTest, SplitSpaces)
{
StringVector tokens;
split("hello world foo", " ", tokens);
ASSERT_EQ(tokens.size(), 3u);
EXPECT_EQ(tokens[0], "hello");
EXPECT_EQ(tokens[1], "world");
EXPECT_EQ(tokens[2], "foo");
}
TEST(StringUtilTest, SplitNoDelimiter)
{
StringVector tokens;
split("hello", ",", tokens);
ASSERT_EQ(tokens.size(), 1u);
EXPECT_EQ(tokens[0], "hello");
}
// trimRight tests
TEST(StringUtilTest, TrimRightSpaces)
{
@@ -1189,105 +1158,6 @@ TEST(ReportTest, LogAndConsoleSimultaneous)
std::remove(logfile);
}
////////////////////////////////////////////////////////////////
// TokenParser tests
////////////////////////////////////////////////////////////////
TEST(TokenParserTest, BasicTokens)
{
char str[] = "hello world foo";
TokenParser tp(str, " ");
ASSERT_TRUE(tp.hasNext());
EXPECT_STREQ(tp.next(), "hello");
ASSERT_TRUE(tp.hasNext());
EXPECT_STREQ(tp.next(), "world");
ASSERT_TRUE(tp.hasNext());
EXPECT_STREQ(tp.next(), "foo");
EXPECT_FALSE(tp.hasNext());
}
TEST(TokenParserTest, CommaDelimiter)
{
char str[] = "one,two,three";
TokenParser tp(str, ",");
ASSERT_TRUE(tp.hasNext());
EXPECT_STREQ(tp.next(), "one");
ASSERT_TRUE(tp.hasNext());
EXPECT_STREQ(tp.next(), "two");
ASSERT_TRUE(tp.hasNext());
EXPECT_STREQ(tp.next(), "three");
EXPECT_FALSE(tp.hasNext());
}
TEST(TokenParserTest, SingleToken)
{
char str[] = "single";
TokenParser tp(str, " ");
ASSERT_TRUE(tp.hasNext());
EXPECT_STREQ(tp.next(), "single");
EXPECT_FALSE(tp.hasNext());
}
TEST(TokenParserTest, LeadingSpaces)
{
char str[] = " hello world";
TokenParser tp(str, " ");
ASSERT_TRUE(tp.hasNext());
EXPECT_STREQ(tp.next(), "hello");
ASSERT_TRUE(tp.hasNext());
EXPECT_STREQ(tp.next(), "world");
EXPECT_FALSE(tp.hasNext());
}
TEST(TokenParserTest, EmptyString)
{
char str[] = "";
TokenParser tp(str, " ");
// For an empty string, hasNext returns true for the first call
// but next() returns a pointer to the empty string
ASSERT_TRUE(tp.hasNext());
char *tok = tp.next();
EXPECT_STREQ(tok, "");
// After first token, no more
EXPECT_FALSE(tp.hasNext());
}
TEST(TokenParserTest, AllSpaces)
{
char str[] = " ";
TokenParser tp(str, " ");
// After skipping leading spaces, token points to '\0'
// hasNext returns true for first call since token_ != nullptr
ASSERT_TRUE(tp.hasNext());
char *tok = tp.next();
EXPECT_STREQ(tok, "");
EXPECT_FALSE(tp.hasNext());
}
TEST(TokenParserTest, MultipleDelimiters)
{
char str[] = "a:b;c";
TokenParser tp(str, ":;");
ASSERT_TRUE(tp.hasNext());
EXPECT_STREQ(tp.next(), "a");
ASSERT_TRUE(tp.hasNext());
EXPECT_STREQ(tp.next(), "b");
ASSERT_TRUE(tp.hasNext());
EXPECT_STREQ(tp.next(), "c");
EXPECT_FALSE(tp.hasNext());
}
TEST(TokenParserTest, ConsecutiveDelimiters)
{
char str[] = "a,,b";
TokenParser tp(str, ",");
ASSERT_TRUE(tp.hasNext());
EXPECT_STREQ(tp.next(), "a");
ASSERT_TRUE(tp.hasNext());
EXPECT_STREQ(tp.next(), "b");
EXPECT_FALSE(tp.hasNext());
}
////////////////////////////////////////////////////////////////
// Additional StringUtil tests
////////////////////////////////////////////////////////////////
@@ -1443,20 +1313,6 @@ TEST(StringUtilTest, StringLessIfComparator)
EXPECT_FALSE(cmp("abc", nullptr));
}
TEST(StringUtilTest, SplitEmpty)
{
StringVector tokens;
split("", ",", tokens);
EXPECT_EQ(tokens.size(), 0u);
}
TEST(StringUtilTest, SplitOnlyDelimiters)
{
StringVector tokens;
split(",,,", ",", tokens);
EXPECT_EQ(tokens.size(), 0u);
}
////////////////////////////////////////////////////////////////
// Debug tests
////////////////////////////////////////////////////////////////
@@ -1821,8 +1677,8 @@ TEST(TransitionCovTest, RiseFallFindShortName)
// RiseFallBoth::to_string and shortName
TEST(TransitionCovTest, RiseFallBothToString)
{
EXPECT_EQ(RiseFallBoth::rise()->to_string(), "^");
EXPECT_EQ(RiseFallBoth::fall()->to_string(), "v");
EXPECT_EQ(RiseFallBoth::rise()->to_string(), "rise");
EXPECT_EQ(RiseFallBoth::fall()->to_string(), "fall");
EXPECT_STREQ(RiseFallBoth::rise()->shortName(), "^");
EXPECT_STREQ(RiseFallBoth::fall()->shortName(), "v");
}
@@ -1956,8 +1812,8 @@ TEST(TransitionCovTest, TransitionMaxIndex)
// RiseFall::to_string
TEST(TransitionCovTest, RiseFallToString)
{
EXPECT_EQ(RiseFall::rise()->to_string(), "^");
EXPECT_EQ(RiseFall::fall()->to_string(), "v");
EXPECT_EQ(RiseFall::rise()->to_string(), "rise");
EXPECT_EQ(RiseFall::fall()->to_string(), "fall");
}
////////////////////////////////////////////////////////////////
@@ -2258,21 +2114,6 @@ TEST(ExceptionCovTest, ExceptionLineConstructor)
EXPECT_STREQ(ex.what(), "test exception line");
}
////////////////////////////////////////////////////////////////
// StringSet deleteContents coverage test
////////////////////////////////////////////////////////////////
TEST(StringSetCovTest, DeleteContents)
{
StringSet *strings = new StringSet;
// Use stringCopy to allocate strings that can be freed by stringDelete
strings->insert(stringCopy("hello"));
strings->insert(stringCopy("world"));
EXPECT_EQ(strings->size(), 2u);
deleteContents(strings);
delete strings;
}
////////////////////////////////////////////////////////////////
// RiseFall::asRiseFallBoth non-const coverage test
////////////////////////////////////////////////////////////////