From 3e249b0b54f31e6b9b075e3eaa7453e90e7cbe8a Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Tue, 15 Dec 2020 23:51:01 +0100 Subject: [PATCH] WIP: More tests for layer multi-mapping --- src/db/unit_tests/dbStreamLayerTests.cc | 41 +++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/src/db/unit_tests/dbStreamLayerTests.cc b/src/db/unit_tests/dbStreamLayerTests.cc index 353e31693..6b0b478b0 100644 --- a/src/db/unit_tests/dbStreamLayerTests.cc +++ b/src/db/unit_tests/dbStreamLayerTests.cc @@ -446,6 +446,18 @@ TEST(7) EXPECT_EQ (p.second, (unsigned int) 0); } +static std::string set2string (const std::set &set) +{ + std::string s; + for (std::set::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 ()); }