From 2b568cdd5e5d2944abddd59853edbc78ddb783a2 Mon Sep 17 00:00:00 2001 From: Matthias Koefferlein Date: Thu, 26 May 2022 07:47:35 +0200 Subject: [PATCH] Fixed some build errors, added tests --- src/edt/edt/edtMainService.cc | 8 +++- src/laybasic/laybasic/layViewObject.cc | 4 +- src/layview/unit_tests/unit_tests.pro | 6 +-- testdata/klayout_main/main.rb | 54 +++++++++++++++----------- testdata/klayout_main/test10.rb | 8 ++++ 5 files changed, 51 insertions(+), 29 deletions(-) create mode 100644 testdata/klayout_main/test10.rb diff --git a/src/edt/edt/edtMainService.cc b/src/edt/edt/edtMainService.cc index be134d55e..3a0f52992 100644 --- a/src/edt/edt/edtMainService.cc +++ b/src/edt/edt/edtMainService.cc @@ -2158,7 +2158,13 @@ MainService::cm_tap () tl_assert (false); // see TODO #endif - if (! view ()->canvas ()->widget () || view ()->canvas ()->mouse_in_window ()) { +#if defined(HAVE_QT) + if (! view ()->canvas ()->widget ()) { + return; + } +#endif + + if (! view ()->canvas ()->mouse_in_window ()) { return; } diff --git a/src/laybasic/laybasic/layViewObject.cc b/src/laybasic/laybasic/layViewObject.cc index 0e5f97719..fc307b75f 100644 --- a/src/laybasic/laybasic/layViewObject.cc +++ b/src/laybasic/laybasic/layViewObject.cc @@ -1146,14 +1146,14 @@ ViewObjectUI::thaw (ViewObject *obj) #if !defined(HAVE_QT) void -ViewObjectWidget::update () +ViewObjectUI::update () { // NOTE: this does not need to be thread-safe as we make sure (as in Qt) that update() is always called from the main thread. m_image_updated = true; } bool -ViewObjectWidget::image_updated () +ViewObjectUI::image_updated () { bool f = m_image_updated; m_image_updated = false; diff --git a/src/layview/unit_tests/unit_tests.pro b/src/layview/unit_tests/unit_tests.pro index 113c3dfb1..36ff7a674 100644 --- a/src/layview/unit_tests/unit_tests.pro +++ b/src/layview/unit_tests/unit_tests.pro @@ -9,10 +9,10 @@ include($$PWD/../../lib_ut.pri) SOURCES = \ layLayoutViewTests.cc \ -INCLUDEPATH += $$TL_INC $$LAYBASIC_INC $$LAYVIEW_INC $$LAYUI_INC $$DB_INC $$RDB_INC $$GSI_INC $$OUT_PWD/../layview -DEPENDPATH += $$TL_INC $$LAYBASIC_INC $$LAYVIEW_INC $$LAYUI_INC $$DB_INC $$RDB_INC $$GSI_INC $$OUT_PWD/../layview +INCLUDEPATH += $$TL_INC $$LAYBASIC_INC $$LAYVIEW_INC $$DB_INC $$RDB_INC $$GSI_INC $$OUT_PWD/../layview +DEPENDPATH += $$TL_INC $$LAYBASIC_INC $$LAYVIEW_INC $$DB_INC $$RDB_INC $$GSI_INC $$OUT_PWD/../layview -LIBS += -L$$DESTDIR_UT -lklayout_layview -lklayout_laybasic -lklayout_layui -lklayout_db -lklayout_tl -lklayout_gsi +LIBS += -L$$DESTDIR_UT -lklayout_layview -lklayout_laybasic -lklayout_db -lklayout_tl -lklayout_gsi !equals(HAVE_QT, "0") { diff --git a/testdata/klayout_main/main.rb b/testdata/klayout_main/main.rb index 1fe083e0f..2f54e511a 100644 --- a/testdata/klayout_main/main.rb +++ b/testdata/klayout_main/main.rb @@ -54,7 +54,7 @@ class KLayoutMain_TestClass < TestBase def test_1 # Basic - version = `#{self.klayout_bin} -v` + version = `#{self.klayout_bin} -v 2>&1` assert_equal(version, "#{RBA::Application.instance.version}\n") end @@ -62,10 +62,10 @@ class KLayoutMain_TestClass < TestBase def test_2 # Basic Ruby - out = `#{self.klayout_bin} -b -rd v1=42 -rd v2=hello -r #{File.join(File.dirname(__FILE__), "test.rb")}` + out = `#{self.klayout_bin} -b -rd v1=42 -rd v2=hello -r #{File.join(File.dirname(__FILE__), "test.rb")} 2>&1` assert_equal(out, "Variable v1=42 v2=hello\n") - out = `#{self.klayout_bin} -b -rd v1=42 -rd v2=hello -r #{File.join(File.dirname(__FILE__), "test.rb")} -rm #{File.join(File.dirname(__FILE__), "test2.rb")} -rm #{File.join(File.dirname(__FILE__), "test3.rb")}` + out = `#{self.klayout_bin} -b -rd v1=42 -rd v2=hello -r #{File.join(File.dirname(__FILE__), "test.rb")} -rm #{File.join(File.dirname(__FILE__), "test2.rb")} -rm #{File.join(File.dirname(__FILE__), "test3.rb")} 2>&1` assert_equal(out, "test2\ntest3\nVariable v1=42 v2=hello\n") end @@ -73,7 +73,7 @@ class KLayoutMain_TestClass < TestBase def test_3 # Basic Python - out = `#{self.klayout_bin} -b -rd v1=42 -rd v2=hello -r #{File.join(File.dirname(__FILE__), "test.py")}` + out = `#{self.klayout_bin} -b -rd v1=42 -rd v2=hello -r #{File.join(File.dirname(__FILE__), "test.py")} 2>&1` assert_equal(out, "Variable v1=42 v2=hello\n") end @@ -83,20 +83,20 @@ class KLayoutMain_TestClass < TestBase # Application class if !RBA.constants.find { |x| x == :QDialog || x == "QDialog" } - out = `#{self.klayout_bin} -b -r #{File.join(File.dirname(__FILE__), "test_app.rb")}` + out = `#{self.klayout_bin} -b -r #{File.join(File.dirname(__FILE__), "test_app.rb")} 2>&1` assert_equal(out, "RBA::Application superclass Object\nMainWindow is not there\n") - out = `#{self.klayout_bin} -z -nc -rx -r #{File.join(File.dirname(__FILE__), "test_app.rb")}` + out = `#{self.klayout_bin} -z -nc -rx -r #{File.join(File.dirname(__FILE__), "test_app.rb")} 2>&1` assert_equal(out, "RBA::Application superclass Object\nMainWindow is there\n") else # QCoreApplication for (headless) mode - out = `#{self.klayout_bin} -b -r #{File.join(File.dirname(__FILE__), "test_app.rb")}` + out = `#{self.klayout_bin} -b -r #{File.join(File.dirname(__FILE__), "test_app.rb")} 2>&1` assert_equal(out, "RBA::Application superclass RBA::QCoreApplication_Native\nMainWindow is not there\n") # QApplication for GUI mode - out = `#{self.klayout_bin} -z -nc -rx -r #{File.join(File.dirname(__FILE__), "test_app.rb")}` + out = `#{self.klayout_bin} -z -nc -rx -r #{File.join(File.dirname(__FILE__), "test_app.rb")} 2>&1` assert_equal(out, "RBA::Application superclass RBA::QApplication_Native\nMainWindow is there\n") end @@ -106,7 +106,7 @@ class KLayoutMain_TestClass < TestBase def test_5 # Script variables - out = `#{self.klayout_bin} -b -wd tv1=17 -wd tv2=25 -wd tv3 -r #{File.join(File.dirname(__FILE__), "test_script.rb")}` + out = `#{self.klayout_bin} -b -wd tv1=17 -wd tv2=25 -wd tv3 -r #{File.join(File.dirname(__FILE__), "test_script.rb")} 2>&1` assert_equal(out, "42\ntrue\n") end @@ -114,10 +114,10 @@ class KLayoutMain_TestClass < TestBase def test_6 # Editable / Non-editable mode - out = `#{self.klayout_bin} -b -ne -r #{File.join(File.dirname(__FILE__), "test_em.rb")}` + out = `#{self.klayout_bin} -b -ne -r #{File.join(File.dirname(__FILE__), "test_em.rb")} 2>&1` assert_equal(out, "false\n") - out = `#{self.klayout_bin} -b -e -r #{File.join(File.dirname(__FILE__), "test_em.rb")}` + out = `#{self.klayout_bin} -b -e -r #{File.join(File.dirname(__FILE__), "test_em.rb")} 2>&1` assert_equal(out, "true\n") end @@ -128,27 +128,27 @@ class KLayoutMain_TestClass < TestBase File.open(cfg_file, "w") { |file| file.puts("") } # Special configuration file - `#{self.klayout_bin} -b -c #{cfg_file} -r #{File.join(File.dirname(__FILE__), "test_set_config1.rb")}` + `#{self.klayout_bin} -b -c #{cfg_file} -r #{File.join(File.dirname(__FILE__), "test_set_config1.rb")} 2>&1` - out = `#{self.klayout_bin} -b -c #{cfg_file} -r #{File.join(File.dirname(__FILE__), "test_read_config.rb")}` + out = `#{self.klayout_bin} -b -c #{cfg_file} -r #{File.join(File.dirname(__FILE__), "test_read_config.rb")} 2>&1` assert_equal(out, "42\n") # Update - `#{self.klayout_bin} -b -c #{cfg_file} -r #{File.join(File.dirname(__FILE__), "test_set_config2.rb")}` + `#{self.klayout_bin} -b -c #{cfg_file} -r #{File.join(File.dirname(__FILE__), "test_set_config2.rb")} 2>&1` - out = `#{self.klayout_bin} -b -c #{cfg_file} -r #{File.join(File.dirname(__FILE__), "test_read_config.rb")}` + out = `#{self.klayout_bin} -b -c #{cfg_file} -r #{File.join(File.dirname(__FILE__), "test_read_config.rb")} 2>&1` assert_equal(out, "17\n") # Reset - `#{self.klayout_bin} -b -c #{cfg_file} -r #{File.join(File.dirname(__FILE__), "test_set_config1.rb")}` + `#{self.klayout_bin} -b -c #{cfg_file} -r #{File.join(File.dirname(__FILE__), "test_set_config1.rb")} 2>&1` - out = `#{self.klayout_bin} -b -c #{cfg_file} -r #{File.join(File.dirname(__FILE__), "test_read_config.rb")}` + out = `#{self.klayout_bin} -b -c #{cfg_file} -r #{File.join(File.dirname(__FILE__), "test_read_config.rb")} 2>&1` assert_equal(out, "42\n") # No update - `#{self.klayout_bin} -b -t -c #{cfg_file} -r #{File.join(File.dirname(__FILE__), "test_set_config2.rb")}` + `#{self.klayout_bin} -b -t -c #{cfg_file} -r #{File.join(File.dirname(__FILE__), "test_set_config2.rb")} 2>&1` - out = `#{self.klayout_bin} -b -c #{cfg_file} -r #{File.join(File.dirname(__FILE__), "test_read_config.rb")}` + out = `#{self.klayout_bin} -b -c #{cfg_file} -r #{File.join(File.dirname(__FILE__), "test_read_config.rb")} 2>&1` assert_equal(out, "42\n") end @@ -156,13 +156,13 @@ class KLayoutMain_TestClass < TestBase def test_8 # Loading layouts - out = `#{self.klayout_bin} -z -nc -rx #{File.join(File.dirname(__FILE__), "test1.gds")} -r #{File.join(File.dirname(__FILE__), "test_lay.rb")}` + out = `#{self.klayout_bin} -z -nc -rx #{File.join(File.dirname(__FILE__), "test1.gds")} -r #{File.join(File.dirname(__FILE__), "test_lay.rb")} 2>&1` assert_equal(out, "TOP1\n") - out = `#{self.klayout_bin} -z -nc -rx #{File.join(File.dirname(__FILE__), "test1.gds")} #{File.join(File.dirname(__FILE__), "test2.gds")} -r #{File.join(File.dirname(__FILE__), "test_lay2.rb")}` + out = `#{self.klayout_bin} -z -nc -rx #{File.join(File.dirname(__FILE__), "test1.gds")} #{File.join(File.dirname(__FILE__), "test2.gds")} -r #{File.join(File.dirname(__FILE__), "test_lay2.rb")} 2>&1` assert_equal(out, "TOP1\nTOP2\n") - out = `#{self.klayout_bin} -z -nc -rx #{File.join(File.dirname(__FILE__), "test1.gds")} #{File.join(File.dirname(__FILE__), "test2.gds")} -s -r #{File.join(File.dirname(__FILE__), "test_lay2.rb")}` + out = `#{self.klayout_bin} -z -nc -rx #{File.join(File.dirname(__FILE__), "test1.gds")} #{File.join(File.dirname(__FILE__), "test2.gds")} -s -r #{File.join(File.dirname(__FILE__), "test_lay2.rb")} 2>&1` assert_equal(out, "TOP1;TOP2\n") end @@ -170,11 +170,19 @@ class KLayoutMain_TestClass < TestBase def test_9 # Sessions - out = `#{self.klayout_bin} -z -nc -rx -u #{File.join(File.dirname(__FILE__), "session.lys")} -r #{File.join(File.dirname(__FILE__), "test_lay2.rb")}` + out = `#{self.klayout_bin} -z -nc -rx -u #{File.join(File.dirname(__FILE__), "session.lys")} -r #{File.join(File.dirname(__FILE__), "test_lay2.rb")} 2>&1` assert_equal(out, "TOP2;TOP1\n") end + def test_10 + + # Headless LayoutView + out = `#{self.klayout_bin} -b -rd input=#{File.join(File.dirname(__FILE__), "test1.gds")} -r #{File.join(File.dirname(__FILE__), "test10.rb")} 2>&1` + assert_equal(out, "(0,0;8,8)\n") + + end + end load("test_epilogue.rb") diff --git a/testdata/klayout_main/test10.rb b/testdata/klayout_main/test10.rb new file mode 100644 index 000000000..e440b5deb --- /dev/null +++ b/testdata/klayout_main/test10.rb @@ -0,0 +1,8 @@ + +lv = RBA::LayoutView::new +lv.load_layout($input) +lv.resize(800, 500) +lv.save_screenshot("test10_screenshot.png") # smoke test + +puts lv.active_cellview.layout.top_cell.dbbox.to_s +