WIP: More tests for layer multi-mapping

This commit is contained in:
Matthias Koefferlein 2020-12-15 23:51:01 +01:00
parent 1f635015ce
commit 3e249b0b54
1 changed files with 41 additions and 0 deletions

View File

@ -446,6 +446,18 @@ TEST(7)
EXPECT_EQ (p.second, (unsigned int) 0);
}
static std::string set2string (const std::set<unsigned int> &set)
{
std::string s;
for (std::set<unsigned int>::const_iterator i = set.begin (); i != set.end (); ++i) {
if (i != set.begin ()) {
s += ",";
}
s += tl::to_string (*i);
}
return s;
}
// multi-mapping, unmapping
TEST(8)
{
@ -477,6 +489,12 @@ TEST(8)
);
EXPECT_EQ (db::LayerMap::from_string_file_format (lm.to_string_file_format ()).to_string (), lm.to_string ());
EXPECT_EQ (set2string (lm.logical (db::LDPair (0, 1000))), "0");
EXPECT_EQ (set2string (lm.logical (db::LDPair (1, 1000))), "0");
EXPECT_EQ (set2string (lm.logical (db::LDPair (0, 5))), "0,1,2");
EXPECT_EQ (set2string (lm.logical (db::LDPair (0, 15))), "0,2");
EXPECT_EQ (set2string (lm.logical (db::LDPair (0, 10))), "0,1");
// NOTE: the leading "+" indicates that the listed layers may go somewhere else, so we can't plainly map them
EXPECT_EQ (lm.mapping_str (0), "+*/0,1-4,5,6-10,11-14,15,16-*");
EXPECT_EQ (lm.mapping_str (1), "+*/1-4,5,6-10");
@ -510,10 +528,33 @@ TEST(8)
);
EXPECT_EQ (db::LayerMap::from_string_file_format (lm.to_string_file_format ()).to_string (), lm.to_string ());
EXPECT_EQ (set2string (lm.logical (db::LDPair (1000, 0))), "0");
EXPECT_EQ (set2string (lm.logical (db::LDPair (1000, 1))), "0");
EXPECT_EQ (set2string (lm.logical (db::LDPair (5, 0))), "0,1,2");
EXPECT_EQ (set2string (lm.logical (db::LDPair (15, 0))), "0,2");
EXPECT_EQ (set2string (lm.logical (db::LDPair (10, 0))), "0,1");
// NOTE: the leading "+" indicates that the listed layers may go somewhere else, so we can't plainly map them
EXPECT_EQ (lm.mapping_str (0), "+0/*;1-4/*;5/*;6-10/*;11-14/*;15/*;16-*/*");
EXPECT_EQ (lm.mapping_str (1), "+1-4/*;5/*;6-10/*");
EXPECT_EQ (lm.mapping_str (2), "+5/*;15/*");
EXPECT_EQ (lm.mapping_str (3), "");
lm = db::LayerMap ();
n = 0;
lm.mmap_expr ("*/*", n++);
EXPECT_EQ (lm.mapping_str (0), "*/*");
EXPECT_EQ (lm.to_string (),
"layer_map('*/*')"
);
EXPECT_EQ (db::LayerMap::from_string_file_format (lm.to_string_file_format ()).to_string (), lm.to_string ());
// some
lm.mmap_expr ("1-10/0-20", n++);
EXPECT_EQ (lm.to_string (),
"layer_map('+0/*;1-10/0-20,21-*;11-*/*';'+1-10/0-20')"
);
EXPECT_EQ (db::LayerMap::from_string_file_format (lm.to_string_file_format ()).to_string (), lm.to_string ());
}