1 package isac.gui.mawen.scalaterm;
3 import isac.bridge.Isabelle_Isac
4 import isac.bridge.xml.DataTypes
5 import edu.tum.cs.isabelle.pure._ // for Term
6 import edu.tum.cs.isabelle._ // for Codec
7 import edu.tum.cs.isabelle.japi._ // for JSystem
9 import junit.framework.TestCase
10 import org.junit.Assert._
13 * Create libisabelle's Scala Term from String for tests.
14 * Compare ScalaAstFromString.
16 class ScalaTermFromString extends TestCase {
18 var sys_ : JSystem = null
19 override def setUp() {
20 sys_ = Isabelle_Isac.connect();
24 * test output from ~~/src/Tools/isac/ProgLang/termC.sml: scala_of_term
26 def test_scala_of_term() {
27 println("/--BEGIN isac.gui.mawen.TestUseCases#test_scala_of_term");
30 var tree = sys_.invoke(isac.bridge.IsacOperations.SCALATERM_OF_STRING, term_str)
31 var term = DataTypes.xml_to_Term(tree)
33 // copied output from ~~/src/Tools/isac/ProgLang/termC.sml: scala_of_term
34 Free("aaa", TFree("'a", List()))
37 term_str = "let aaa = bbb in aaa"
38 tree = sys_.invoke(isac.bridge.IsacOperations.SCALATERM_OF_STRING, term_str)
39 term = DataTypes.xml_to_Term(tree)
41 // copied output from ~~/src/Tools/isac/ProgLang/termC.sml: scala_of_term
42 App(App(Const("HOL.Let", Type("fun", List(TFree("'a", List("HOL.type")),Type("fun", List(Type("fun", List(TFree("'a", List("HOL.type")),TFree("'a", List("HOL.type")))),TFree("'a", List("HOL.type"))))))), Free("bbb", TFree("'a", List("HOL.type")))), Abs("aaa", TFree("'a", List("HOL.type")), Bound(0)))
45 // ATTENTION: numerals are different due to specific Isac code:
46 // ~~/src/Tools/isac/ProgLang/termC.sml: numbers_to_string
48 tree = sys_.invoke(isac.bridge.IsacOperations.SCALATERM_OF_STRING, term_str)
49 term = DataTypes.xml_to_Term(tree)
52 Free("0", TFree("'a", List("Groups.zero")))
54 // copied output from ~~/src/Tools/isac/ProgLang/termC.sml: scala_of_term (without parse*)
55 Const("Groups.zero_class.zero", TFree("'a", List("Groups.zero")))
57 println("\\--END isac.gui.mawen.TestUseCases#test_scala_of_term");
61 println("/--BEGIN isac.gui.mawen.syntax.ScalaAstFromString#test_etc");
64 var term_str = "dummy"
65 var tree = sys_.invoke(isac.bridge.IsacOperations.SCALATERM_OF_STRING, term_str)
66 var term = DataTypes.xml_to_Term(tree)
68 term_str = "(aaa, bbb, ccc, ddd)"
69 tree = sys_.invoke(isac.bridge.IsacOperations.SCALATERM_OF_STRING, term_str)
70 term = DataTypes.xml_to_Term(tree)
72 // copied output from SML: writeln(scala_of_term(@{term "(aaa, bbb, ccc)"}))
75 Const("Product_Type.Pair", Type("fun", List(TFree("'a", List("HOL.type")),Type("fun", List(Type("Product_Type.prod", List(TFree("'b", List("HOL.type")),Type("Product_Type.prod", List(TFree("'c", List("HOL.type")),TFree("'d", List("HOL.type")))))),Type("Product_Type.prod", List(TFree("'a", List("HOL.type")),Type("Product_Type.prod", List(TFree("'b", List("HOL.type")),Type("Product_Type.prod", List(TFree("'c", List("HOL.type")),TFree("'d", List("HOL.type"))))))))))))),
76 Free("aaa", TFree("'a", List("HOL.type")))),
79 Const("Product_Type.Pair", Type("fun", List(TFree("'b", List("HOL.type")),Type("fun", List(Type("Product_Type.prod", List(TFree("'c", List("HOL.type")),TFree("'d", List("HOL.type")))),Type("Product_Type.prod", List(TFree("'b", List("HOL.type")),Type("Product_Type.prod", List(TFree("'c", List("HOL.type")),TFree("'d", List("HOL.type"))))))))))),
80 Free("bbb", TFree("'b", List("HOL.type")))),
83 Const("Product_Type.Pair", Type("fun", List(TFree("'c", List("HOL.type")),Type("fun", List(TFree("'d", List("HOL.type")),Type("Product_Type.prod", List(TFree("'c", List("HOL.type")),TFree("'d", List("HOL.type"))))))))),
84 Free("ccc", TFree("'c", List("HOL.type")))),
85 Free("ddd", TFree("'d", List("HOL.type"))
89 println("\\--END isac.gui.mawen.syntax.ScalaAstFromString#test_etc");
92 override def tearDown() {