# encoding: UTF-8 # KLayout Layout Viewer # Copyright (C) 2006-2024 Matthias Koefferlein # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA if !$:.member?(File::dirname($0)) $:.push(File::dirname($0)) end load("test_prologue.rb") class LAYMacro_TestClass < TestBase def test_1 macro = RBA::Macro::new macro.version = "1.7" assert_equal(macro.version, "1.7") macro.doc = "%doc" assert_equal(macro.doc, "%doc") macro.description = "%description" assert_equal(macro.description, "%description") macro.prolog = "%prolog" assert_equal(macro.prolog, "%prolog") macro.epilog = "%epilog" assert_equal(macro.epilog, "%epilog") macro.category = "%category" assert_equal(macro.category, "%category") macro.shortcut = "%shortcut" assert_equal(macro.shortcut, "%shortcut") assert_equal(macro.is_autorun?, false) macro.is_autorun = true assert_equal(macro.is_autorun?, true) assert_equal(macro.is_autorun_early?, false) macro.is_autorun_early = true assert_equal(macro.is_autorun_early?, true) macro.format = RBA::Macro::PlainTextFormat assert_equal(macro.format == RBA::Macro::PlainTextFormat, true) macro.format = RBA::Macro::MacroFormat assert_equal(macro.format == RBA::Macro::MacroFormat, true) macro.interpreter = RBA::Macro::Ruby assert_equal(macro.interpreter == RBA::Macro::Ruby, true) assert_equal(macro.interpreter_name, "Ruby") macro.interpreter = RBA::Macro::Python assert_equal(macro.interpreter == RBA::Macro::Python, true) assert_equal(macro.interpreter_name, "Python") macro.dsl_interpreter = "%dsl" assert_equal(macro.dsl_interpreter, "%dsl") macro.text = "%text" macro.format = RBA::Macro::PlainTextWithHashAnnotationsFormat assert_equal(macro.text, "%text") macro.sync_text_with_properties assert_equal(macro.text, "# $description: %description\n" + "# $prolog: %prolog\n" + "# $epilog: %epilog\n" + "# $version: 1.7\n" + "# $autorun\n" + "# $autorun-early\n" + "# $shortcut: %shortcut\n" + "%text") macro.text = "# $description: %description\n" + "# $prolog: %prolog\n" + "# $epilog: %epilog\n" + "# $version: 7.1\n" + "# $autorun\n" + "# $autorun-early\n" + "# $shortcut: %shortcut\n" + "%text" macro.sync_properties_with_text assert_equal(macro.version, "7.1") macro.group_name = "%group" assert_equal(macro.group_name, "%group") assert_equal(macro.show_in_menu?, false) macro.show_in_menu = true assert_equal(macro.show_in_menu?, true) macro.menu_path = "menu.path" assert_equal(macro.menu_path, "menu.path") end def test_2 macro_file = File.join($ut_testtmp, "test.lym") File.open(macro_file, "w") do |file| file.write(<<"END") %description 42 ruby $test_output = "x" + $test_input END end macro = RBA::Macro::new(macro_file) assert_equal(macro.description, "%description") assert_equal(macro.path, macro_file) $test_input = "42" $test_output = "" macro.run assert_equal($test_output, "x42") macro_file2 = File.join($ut_testtmp, "test2.lym") macro.save_to(macro_file2) macro2 = RBA::Macro::new(macro_file2) assert_equal(macro2.path, macro_file2) end def test_3 pya = RBA::Interpreter.python_interpreter if !pya return end macro_file = File.join($ut_testtmp, "test.lym") File.open(macro_file, "w") do |file| file.write(<<"END") %description 42 python print("Python calling!") context.value = "x" + context.value END end macro = RBA::Macro::new(macro_file) assert_equal(macro.description, "%description") assert_equal(macro.path, macro_file) context = RBA::Value::new context.value = "42" pya.define_variable("context", context) macro.run assert_equal(context.value, "x42") end end load("test_epilogue.rb")