mirror of https://github.com/KLayout/klayout.git
More basic bd tests (reader) and some bug fixes
This commit is contained in:
parent
a9b64d1e57
commit
c7edc9e7a0
|
|
@ -79,11 +79,11 @@ GenericReaderOptions::add_options (tl::CommandLineOptions &cmd)
|
|||
std::string group ("[" + m_group_prefix + " options - GDS2 and OASIS specific]");
|
||||
|
||||
cmd << tl::arg (group +
|
||||
"#!--" + m_long_prefix + "disable-texts", &m_common_reader_options.enable_text_objects, "Skips text objects",
|
||||
"#!--" + m_long_prefix + "no-texts", &m_common_reader_options.enable_text_objects, "Skips text objects",
|
||||
"With this option set, text objects won't be read."
|
||||
)
|
||||
<< tl::arg (group +
|
||||
"#!--" + m_long_prefix + "disable-properties", &m_common_reader_options.enable_properties, "Skips properties",
|
||||
"#!--" + m_long_prefix + "no-properties", &m_common_reader_options.enable_properties, "Skips properties",
|
||||
"With this option set, properties won't be read."
|
||||
)
|
||||
;
|
||||
|
|
@ -174,7 +174,7 @@ GenericReaderOptions::add_options (tl::CommandLineOptions &cmd)
|
|||
"#--" + m_long_prefix + "dxf-polyline-mode=mode", &m_dxf_reader_options.polyline_mode, "Specifies how POLYLINE records are handled",
|
||||
"This value specifies how POLYLINE records are handled:\n"
|
||||
"\n"
|
||||
"* 0: automatic mode\n"
|
||||
"* 0: automatic mode (default)\n"
|
||||
"* 1: keep lines\n"
|
||||
"* 2: create polygons from closed POLYLINE/LWPOLYLINE with width == 0\n"
|
||||
"* 3: merge all lines (width width 0)\n"
|
||||
|
|
|
|||
|
|
@ -202,3 +202,91 @@ TEST(2)
|
|||
|
||||
EXPECT_EQ (cells2string (layout, cells), "TOP,B,C,D");
|
||||
}
|
||||
|
||||
// Testing reader options
|
||||
TEST(10)
|
||||
{
|
||||
bd::GenericReaderOptions opt;
|
||||
tl::CommandLineOptions cmd;
|
||||
|
||||
opt.add_options (cmd);
|
||||
|
||||
char *argv[] = { "x",
|
||||
// CIF and DXF
|
||||
"-id=0.125",
|
||||
// CIF
|
||||
"-iw=1",
|
||||
// DXF
|
||||
"-iu=2.5",
|
||||
"--dxf-circle-accuracy=0.5",
|
||||
"--dxf-circle-points=1000",
|
||||
"--dxf-keep-other-cells",
|
||||
"--dxf-polyline-mode=3",
|
||||
"--dxf-render-texts-as-polygons",
|
||||
"--dxf-text-scaling=75",
|
||||
// GDS2 and OASIS
|
||||
"--no-properties",
|
||||
"--no-texts",
|
||||
// GDS2
|
||||
"-ib=3",
|
||||
"--no-big-records",
|
||||
"--no-multi-xy-records",
|
||||
// General
|
||||
"-im=1/0 3,4/0-255 A:17/0",
|
||||
"-is",
|
||||
// OASIS
|
||||
"--expect-strict-mode=1"
|
||||
};
|
||||
|
||||
cmd.parse (sizeof (argv) / sizeof (argv[0]), argv);
|
||||
|
||||
db::LoadLayoutOptions stream_opt;
|
||||
EXPECT_EQ (tl::to_string (stream_opt.get_options<db::CIFReaderOptions> ().dbu), "0.001");
|
||||
EXPECT_EQ (stream_opt.get_options<db::CIFReaderOptions> ().wire_mode, (unsigned int) 0);
|
||||
EXPECT_EQ (stream_opt.get_options<db::CIFReaderOptions> ().layer_map.to_string (), "layer_map()");
|
||||
EXPECT_EQ (stream_opt.get_options<db::CIFReaderOptions> ().create_other_layers, true);
|
||||
EXPECT_EQ (tl::to_string (stream_opt.get_options<db::DXFReaderOptions> ().dbu), "0.001");
|
||||
EXPECT_EQ (stream_opt.get_options<db::DXFReaderOptions> ().layer_map.to_string (), "layer_map()");
|
||||
EXPECT_EQ (stream_opt.get_options<db::DXFReaderOptions> ().create_other_layers, true);
|
||||
EXPECT_EQ (stream_opt.get_options<db::DXFReaderOptions> ().unit, 1.0);
|
||||
EXPECT_EQ (tl::to_string (stream_opt.get_options<db::DXFReaderOptions> ().circle_accuracy), "0");
|
||||
EXPECT_EQ (stream_opt.get_options<db::DXFReaderOptions> ().circle_points, 100);
|
||||
EXPECT_EQ (stream_opt.get_options<db::DXFReaderOptions> ().keep_other_cells, false);
|
||||
EXPECT_EQ (stream_opt.get_options<db::DXFReaderOptions> ().polyline_mode, 0);
|
||||
EXPECT_EQ (stream_opt.get_options<db::DXFReaderOptions> ().render_texts_as_polygons, false);
|
||||
EXPECT_EQ (stream_opt.get_options<db::DXFReaderOptions> ().text_scaling, 100);
|
||||
EXPECT_EQ (stream_opt.get_options<db::CommonReaderOptions> ().layer_map.to_string (), "layer_map()");
|
||||
EXPECT_EQ (stream_opt.get_options<db::CommonReaderOptions> ().create_other_layers, true);
|
||||
EXPECT_EQ (stream_opt.get_options<db::CommonReaderOptions> ().enable_properties, true);
|
||||
EXPECT_EQ (stream_opt.get_options<db::CommonReaderOptions> ().enable_text_objects, true);
|
||||
EXPECT_EQ (stream_opt.get_options<db::GDS2ReaderOptions> ().box_mode, (unsigned int) 1);
|
||||
EXPECT_EQ (stream_opt.get_options<db::GDS2ReaderOptions> ().allow_big_records, true);
|
||||
EXPECT_EQ (stream_opt.get_options<db::GDS2ReaderOptions> ().allow_multi_xy_records, true);
|
||||
EXPECT_EQ (stream_opt.get_options<db::OASISReaderOptions> ().expect_strict_mode, -1);
|
||||
|
||||
opt.configure (stream_opt);
|
||||
|
||||
EXPECT_EQ (tl::to_string (stream_opt.get_options<db::CIFReaderOptions> ().dbu), "0.125");
|
||||
EXPECT_EQ (stream_opt.get_options<db::CIFReaderOptions> ().wire_mode, (unsigned int) 1);
|
||||
EXPECT_EQ (stream_opt.get_options<db::CIFReaderOptions> ().layer_map.to_string (), "layer_map('1/0';'3-4/0-255';'A : 17/0')");
|
||||
EXPECT_EQ (stream_opt.get_options<db::CIFReaderOptions> ().create_other_layers, false);
|
||||
EXPECT_EQ (tl::to_string (stream_opt.get_options<db::DXFReaderOptions> ().dbu), "0.125");
|
||||
EXPECT_EQ (stream_opt.get_options<db::DXFReaderOptions> ().layer_map.to_string (), "layer_map('1/0';'3-4/0-255';'A : 17/0')");
|
||||
EXPECT_EQ (stream_opt.get_options<db::DXFReaderOptions> ().create_other_layers, false);
|
||||
EXPECT_EQ (stream_opt.get_options<db::DXFReaderOptions> ().unit, 2.5);
|
||||
EXPECT_EQ (tl::to_string (stream_opt.get_options<db::DXFReaderOptions> ().circle_accuracy), "0.5");
|
||||
EXPECT_EQ (stream_opt.get_options<db::DXFReaderOptions> ().circle_points, 1000);
|
||||
EXPECT_EQ (stream_opt.get_options<db::DXFReaderOptions> ().keep_other_cells, true);
|
||||
EXPECT_EQ (stream_opt.get_options<db::DXFReaderOptions> ().polyline_mode, 3);
|
||||
EXPECT_EQ (stream_opt.get_options<db::DXFReaderOptions> ().render_texts_as_polygons, true);
|
||||
EXPECT_EQ (stream_opt.get_options<db::DXFReaderOptions> ().text_scaling, 75);
|
||||
EXPECT_EQ (stream_opt.get_options<db::CommonReaderOptions> ().layer_map.to_string (), "layer_map('1/0';'3-4/0-255';'A : 17/0')");
|
||||
EXPECT_EQ (stream_opt.get_options<db::CommonReaderOptions> ().create_other_layers, false);
|
||||
EXPECT_EQ (stream_opt.get_options<db::CommonReaderOptions> ().enable_properties, false);
|
||||
EXPECT_EQ (stream_opt.get_options<db::CommonReaderOptions> ().enable_text_objects, false);
|
||||
EXPECT_EQ (stream_opt.get_options<db::GDS2ReaderOptions> ().box_mode, (unsigned int) 3);
|
||||
EXPECT_EQ (stream_opt.get_options<db::GDS2ReaderOptions> ().allow_big_records, false);
|
||||
EXPECT_EQ (stream_opt.get_options<db::GDS2ReaderOptions> ().allow_multi_xy_records, false);
|
||||
EXPECT_EQ (stream_opt.get_options<db::OASISReaderOptions> ().expect_strict_mode, 1);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -89,7 +89,7 @@ public:
|
|||
template <class T>
|
||||
void set_options (const T &options)
|
||||
{
|
||||
m_options.insert (std::make_pair (options.format_name (), options.clone ()));
|
||||
set_options (options.clone ());
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
@ -104,7 +104,13 @@ public:
|
|||
template <class T>
|
||||
void set_options (T *options)
|
||||
{
|
||||
m_options.insert (std::make_pair (options->format_name (), options));
|
||||
std::map<std::string, FormatSpecificReaderOptions *>::iterator o = m_options.find (options->format_name ());
|
||||
if (o != m_options.end ()) {
|
||||
delete o->second;
|
||||
o->second = options;
|
||||
} else {
|
||||
m_options.insert (std::make_pair (options->format_name (), options));
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -592,10 +592,10 @@ CommandLineOptions::parse (int argc, char *argv[])
|
|||
} else {
|
||||
msg += "at argument #" + tl::to_string (i);
|
||||
}
|
||||
if (! arg->is_option ()) {
|
||||
if (arg->is_option ()) {
|
||||
msg += " (option " + arg->option_desc () + ")";
|
||||
}
|
||||
msg += ":";
|
||||
msg += ": ";
|
||||
msg += ex.msg ();
|
||||
|
||||
throw tl::Exception (msg);
|
||||
|
|
|
|||
Loading…
Reference in New Issue