mirror of https://github.com/KLayout/klayout.git
Added missing file
This commit is contained in:
parent
2039d99f03
commit
7d316b2a2c
|
|
@ -0,0 +1,184 @@
|
|||
# encoding: UTF-8
|
||||
|
||||
# KLayout Layout Viewer
|
||||
# Copyright (C) 2006-2021 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")
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<klayout-macro>
|
||||
<description>%description</description>
|
||||
<version>42</version>
|
||||
<interpreter>ruby</interpreter>
|
||||
<text>
|
||||
$test_output = "x" + $test_input
|
||||
</text>
|
||||
</klayout-macro>
|
||||
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")
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<klayout-macro>
|
||||
<description>%description</description>
|
||||
<version>42</version>
|
||||
<interpreter>python</interpreter>
|
||||
<text>
|
||||
print("Python calling!")
|
||||
context.value = "x" + context.value
|
||||
</text>
|
||||
</klayout-macro>
|
||||
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")
|
||||
Loading…
Reference in New Issue