mirror of
https://github.com/KLayout/klayout.git
synced 2026-09-04 16:50:09 +02:00
Tests and bugfixing for meta info persistence in OASIS + GDS
This commit is contained in:
@@ -342,6 +342,18 @@ LayoutOrCellContextInfo::serialize (std::vector<std::string> &strings)
|
||||
}
|
||||
}
|
||||
|
||||
bool
|
||||
LayoutOrCellContextInfo::has_proxy_info () const
|
||||
{
|
||||
return !pcell_name.empty () || !lib_name.empty ();
|
||||
}
|
||||
|
||||
bool
|
||||
LayoutOrCellContextInfo::has_meta_info () const
|
||||
{
|
||||
return !meta_info.empty ();
|
||||
}
|
||||
|
||||
// -----------------------------------------------------------------
|
||||
// Implementation of the Layout class
|
||||
|
||||
|
||||
@@ -427,6 +427,9 @@ struct DB_PUBLIC LayoutOrCellContextInfo
|
||||
|
||||
static LayoutOrCellContextInfo deserialize (std::vector<std::string>::const_iterator from, std::vector<std::string>::const_iterator to);
|
||||
void serialize (std::vector<std::string> &strings);
|
||||
|
||||
bool has_proxy_info () const;
|
||||
bool has_meta_info () const;
|
||||
};
|
||||
|
||||
/**
|
||||
|
||||
@@ -677,7 +677,7 @@ TEST(7_LayerProperties)
|
||||
db::Layout l (&m);
|
||||
|
||||
EXPECT_EQ (l.is_valid_layer (0), false);
|
||||
EXPECT_EQ (l.guiding_shape_layer (), 0);
|
||||
EXPECT_EQ (l.guiding_shape_layer (), (unsigned int) 0);
|
||||
EXPECT_EQ (l.is_special_layer (0), true);
|
||||
EXPECT_EQ (int (l.layers ()), 1);
|
||||
|
||||
@@ -737,3 +737,61 @@ TEST(7_LayerProperties)
|
||||
EXPECT_EQ (l.get_layer_maybe (db::LayerProperties (1, 0)), -1);
|
||||
EXPECT_EQ (l.get_layer_maybe (db::LayerProperties (2, 0)), -1);
|
||||
}
|
||||
|
||||
TEST(8_MetaInfo)
|
||||
{
|
||||
db::Layout ly;
|
||||
|
||||
EXPECT_EQ (ly.meta_info_name_id ("a"), (unsigned int) 0);
|
||||
EXPECT_EQ (ly.meta_info_name_id ("b"), (unsigned int) 1);
|
||||
EXPECT_EQ (ly.meta_info_name_id ("a"), (unsigned int) 0);
|
||||
EXPECT_EQ (ly.has_context_info (), false);
|
||||
|
||||
ly.add_meta_info ("a", db::MetaInfo ("description", tl::Variant (17.5), false));
|
||||
ly.add_meta_info ("b", db::MetaInfo ("", tl::Variant ("value"), true));
|
||||
|
||||
EXPECT_EQ (ly.has_context_info (), true);
|
||||
|
||||
EXPECT_EQ (ly.meta_info ("x").value.to_string (), "nil");
|
||||
EXPECT_EQ (ly.meta_info ("x").description, "");
|
||||
EXPECT_EQ (ly.meta_info ("x").persisted, false);
|
||||
|
||||
EXPECT_EQ (ly.meta_info ("a").value.to_string (), "17.5");
|
||||
EXPECT_EQ (ly.meta_info ("a").description, "description");
|
||||
EXPECT_EQ (ly.meta_info ("a").persisted, false);
|
||||
|
||||
EXPECT_EQ (ly.meta_info (1).value.to_string (), "value");
|
||||
EXPECT_EQ (ly.meta_info (1).description, "");
|
||||
EXPECT_EQ (ly.meta_info (1).persisted, true);
|
||||
|
||||
db::cell_index_type ci = ly.add_cell ("X");
|
||||
|
||||
EXPECT_EQ (ly.has_context_info (ci), false);
|
||||
|
||||
ly.add_meta_info (ci, "a", db::MetaInfo ("dd", tl::Variant (-1), false));
|
||||
ly.add_meta_info (ci, "b", db::MetaInfo ("d", tl::Variant ("u"), true));
|
||||
|
||||
EXPECT_EQ (ly.has_context_info (ci), true);
|
||||
|
||||
EXPECT_EQ (ly.meta_info (ci, "x").value.to_string (), "nil");
|
||||
EXPECT_EQ (ly.meta_info (ci, "x").description, "");
|
||||
EXPECT_EQ (ly.meta_info (ci, "x").persisted, false);
|
||||
|
||||
EXPECT_EQ (ly.meta_info (ci, "a").value.to_string (), "-1");
|
||||
EXPECT_EQ (ly.meta_info (ci, "a").description, "dd");
|
||||
EXPECT_EQ (ly.meta_info (ci, "a").persisted, false);
|
||||
|
||||
EXPECT_EQ (ly.meta_info (ci, 1).value.to_string (), "u");
|
||||
EXPECT_EQ (ly.meta_info (ci, 1).description, "d");
|
||||
EXPECT_EQ (ly.meta_info (ci, 1).persisted, true);
|
||||
|
||||
EXPECT_EQ (ly.has_context_info (), true);
|
||||
ly.clear_meta ();
|
||||
EXPECT_EQ (ly.has_context_info (), false);
|
||||
EXPECT_EQ (ly.meta_info ("a").value.to_string (), "nil");
|
||||
|
||||
EXPECT_EQ (ly.has_context_info (ci), true);
|
||||
ly.clear_meta (ci);
|
||||
EXPECT_EQ (ly.has_context_info (ci), false);
|
||||
EXPECT_EQ (ly.meta_info (ci, "a").value.to_string (), "nil");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user