public class org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar extends org.finos.legend.engine.language.pure.compiler.test.TestCompilationFromGrammar$TestCompilationFromGrammarTestSuite
{
public void <init>()
{
org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar v;
v := @this: org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar;
specialinvoke v.<org.finos.legend.engine.language.pure.compiler.test.TestCompilationFromGrammar$TestCompilationFromGrammarTestSuite: void <init>()>();
return;
}
public java.lang.String getDuplicatedElementTestCode()
{
org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar v;
v := @this: org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar;
return "Class anything::class {}\n###Mapping\nMapping anything::somethingelse ()\n###Runtime\nRuntime anything::class\n{\n mappings: [anything::somethingelse];\n}";
}
public void testSingleConnectionRuntimeCompilation()
{
java.lang.String v;
org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar v;
v := @this: org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>("Class test::class\n{\n  ok : Integer[0..1];\n}\n###Mapping\nMapping test::mapping::someMapping\n(\n)\n###Connection\nJsonModelConnection com::test::connection\n{\n  class : test::class;  url : \'asd\';\n}\n") <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001###Runtime\nSingleConnectionRuntime com::test::singleConnectionRuntime\n{\n  mappings:\n  [\n    test::mapping::someMapping\n  ];\n  connection: com::test::connection;\n}\n");
staticinvoke <org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar: org.eclipse.collections.api.tuple.Pair test(java.lang.String)>(v);
return;
}
public java.lang.String getDuplicatedElementTestExpectedErrorMessage()
{
org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar v;
v := @this: org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar;
return "COMPILATION error at [5:1-8:1]: Duplicated element \'anything::class\'";
}
public void testRuntime()
{
java.lang.String[] v;
org.eclipse.collections.api.factory.list.MutableListFactory v;
org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar v;
org.eclipse.collections.api.list.MutableList v;
java.lang.String v, v, v, v, v, v;
v := @this: org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar;
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>("Class test::class\n{\n  ok : Integer[0..1];\n}\n###Mapping\nMapping test::mapping\n(\n)\n###Connection\nJsonModelConnection test::connection\n{\n  class : test::class;  url : \'asd\';\n}\n") <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001###Runtime\nRuntime test::runtime\n{\n  mappings:\n  [\n    test::mapping2\n  ];\n}\n");
staticinvoke <org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar: org.eclipse.collections.api.tuple.Pair test(java.lang.String,java.lang.String)>(v, "COMPILATION error at [19:5-18]: Can\'t find mapping \'test::mapping2\'");
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>("Class test::class\n{\n  ok : Integer[0..1];\n}\n###Mapping\nMapping test::mapping\n(\n)\n###Connection\nJsonModelConnection test::connection\n{\n  class : test::class;  url : \'asd\';\n}\n") <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001###Runtime\nRuntime test::runtime\n{\n  mappings:\n  [\n  ];\n}\n");
v = <org.eclipse.collections.impl.factory.Lists: org.eclipse.collections.api.factory.list.MutableListFactory mutable>;
v = newarray (java.lang.String)[1];
v[0] = "COMPILATION error at [15:1-20:1]: Runtime must cover at least one mapping";
v = interfaceinvoke v.<org.eclipse.collections.api.factory.list.MutableListFactory: org.eclipse.collections.api.list.MutableList 'with'(java.lang.Object[])>(v);
staticinvoke <org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar: org.eclipse.collections.api.tuple.Pair test(java.lang.String,java.lang.String,java.util.List)>(v, null, v);
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>("Class test::class\n{\n  ok : Integer[0..1];\n}\n###Mapping\nMapping test::mapping\n(\n)\n###Connection\nJsonModelConnection test::connection\n{\n  class : test::class;  url : \'asd\';\n}\n") <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001###Runtime\nRuntime test::runtime\n{\n  mappings:\n  [\n    test::mapping\n  ];\n  connections:\n      [\n        ModelStore: [id1: test::connection]\n      ];\n}\n");
staticinvoke <org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar: org.eclipse.collections.api.tuple.Pair test(java.lang.String,java.lang.String)>(v, "COMPILATION error at [23:27-43]: Can\'t find connection \'test::connection2\'");
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>("Class test::class\n{\n  ok : Integer[0..1];\n}\n###Mapping\nMapping test::mapping\n(\n)\n###Connection\nJsonModelConnection test::connection\n{\n  class : test::class;  url : \'asd\';\n}\n") <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001###Runtime\nRuntime test::runtime\n{\n  mappings:\n  [\n    test::mapping\n  ];\n      connections: [\n      ModelStore: [id1: #{\n        JsonModelConnection\n        {\n          class: test::class;\n          url: \'my_url\';\n        }\n      }#]\n   ];\n}\n");
staticinvoke <org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar: org.eclipse.collections.api.tuple.Pair test(java.lang.String,java.lang.String)>(v, "COMPILATION error at [25:18-29]: Can\'t find class \'test::class2\'");
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>("Class test::class\n{\n  ok : Integer[0..1];\n}\n###Mapping\nMapping test::mapping\n(\n)\n###Connection\nJsonModelConnection test::connection\n{\n  class : test::class;  url : \'asd\';\n}\n") <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001###Runtime\nRuntime test::runtime\n{\n  mappings:\n  [\n    test::mapping\n  ];\n      connections: [\n      ModelStore: [id1: #{ JsonModelConnection { class:                   test::class; url: \'my_url\'; }}#]\n   ];\n}\n");
staticinvoke <org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar: org.eclipse.collections.api.tuple.Pair test(java.lang.String,java.lang.String)>(v, "COMPILATION error at [22:75-86]: Can\'t find class \'test::class2\'");
v = dynamicinvoke "makeConcatWithConstants" <java.lang.String (java.lang.String)>("Class test::class\n{\n  ok : Integer[0..1];\n}\n###Mapping\nMapping test::mapping\n(\n)\n###Connection\nJsonModelConnection test::connection\n{\n  class : test::class;  url : \'asd\';\n}\n") <java.lang.invoke.StringConcatFactory: java.lang.invoke.CallSite makeConcatWithConstants(java.lang.invoke.MethodHandles$Lookup,java.lang.String,java.lang.invoke.MethodType,java.lang.String,java.lang.Object[])>("\u0001###Runtime\nRuntime test::runtime\n{\n  mappings:\n  [\n    test::mapping\n  ];\n      connections: [\n      ModelStore2: [id1: #{\n        JsonModelConnection\n        {\n          class: test::class;\n          url: \'my_url\';\n        }\n      }#]\n   ];\n}\n");
staticinvoke <org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar: org.eclipse.collections.api.tuple.Pair test(java.lang.String,java.lang.String)>(v, "COMPILATION error at [22:7-17]: Can\'t find the packageable element \'ModelStore2\'");
return;
}
public void testRuntimeWithConnectionStores()
{
org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar v;
v := @this: org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar;
staticinvoke <org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar: org.eclipse.collections.api.tuple.Pair test(java.lang.String)>("Class meta::mySimpleClass\n{\n  name: String[1];\n}\n\n###Mapping\nMapping meta::mySimpleMapping\n(\n)\n\n\n###Connection\nJsonModelConnection meta::mySimpleConnection\n{\n  class: meta::mySimpleClass;\n  url: \'my_url\';\n}\n\n\n###Runtime\nimport meta::*;\nRuntime meta::mySimpleRuntime\n{\n  connectionStores:\n  [\n  meta::mySimpleConnection : [\n     ModelStore\n    ]\n  ];\n  mappings : \n  [meta::mySimpleMapping\n  ];\n}\n");
return;
}
public void testRuntimeWithImport()
{
org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar v;
v := @this: org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar;
staticinvoke <org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar: org.eclipse.collections.api.tuple.Pair test(java.lang.String)>("Class meta::mySimpleClass\n{\n  name: String[1];\n}\n\nClass meta::mySimpleClass2\n{\n  name: String[1];\n}\n\n###Mapping\nMapping meta::mySimpleMapping\n(\n)\n\n\n###Connection\nJsonModelConnection meta::mySimpleConnection\n{\n  class: meta::mySimpleClass;\n  url: \'my_url\';\n}\n\n\n###Runtime\nimport meta::*;\nRuntime meta::mySimpleRuntime\n{\n  connections:\n  [\n  ModelStore :   [\n  id3: mySimpleConnection,\n  id4: #{\n    JsonModelConnection\n    {\n      class: mySimpleClass;\n      url: \'my_url\';\n    }\n  }#\n  ]\n];\n  mappings   : \n  [mySimpleMapping\n  ];\n}\n");
return;
}
public void testForMultipleModelChainConnectionsWithinSameStore()
{
java.util.List v;
org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar v;
v := @this: org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar;
v = staticinvoke <java.util.Collections: java.util.List singletonList(java.lang.Object)>("COMPILATION error at [73:1-87:1]: Multiple ModelChainConnections are Not Supported for the same Runtime.");
staticinvoke <org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar: org.eclipse.collections.api.tuple.Pair test(java.lang.String,java.lang.String,java.util.List)>("###Pure\nClass humanResourceModel::students\n{\n  name: String[1];\n}\n\nClass humanResourceModel::class\n{\n  studentname: String[1];\n}\n\nClass humanResourceModel::school\n{\n  studentname: String[1];\n}\n\nClass humanResourceModel::student\n{\n  firstName: String[1];\n}\n\n###Mapping\nMapping humanResourceModel::M2M_Mapping\n(\n  *humanResourceModel::school: Pure\n  {\n    ~src humanResourceModel::class\n    studentname: $src.studentname\n  }\n)\n\nMapping humanResourceModel::M2M_Mapping2\n(\n  *humanResourceModel::class: Pure\n  {\n    ~src humanResourceModel::students\n    studentname: $src.name->toUpper()\n  }\n)\n\nMapping humanResourceModel::M2M_Mapping3\n(\n  *humanResourceModel::student: Pure\n  {\n    ~src humanResourceModel::students\n    firstName: $src.name->substring(0, $src.name->indexOf(\' \'))\n  }\n)\n\n###Connection\nModelChainConnection humanResourceModel::M2MModelChainConnection\n{\n  mappings: [\n    humanResourceModel::M2M_Mapping3\n  ];\n}\n\nModelChainConnection humanResourceModel::M2MModelChainConnection2\n{\n  mappings: [\n    humanResourceModel::M2M_Mapping3\n  ];\n}\n\nJsonModelConnection humanResourceModel::JsonModelConnection\n{\n  class: humanResourceModel::students;\n  url: \'data:application/json,{\"name\": \"John Johnson\"}\';\n}\n\n\n###Runtime\nRuntime humanResourceModel::M2MModelRuntime\n{\n  mappings:\n  [\n    humanResourceModel::M2M_Mapping\n  ];\n  connections:\n  [\n    ModelStore:\n    [\n      connection_1: humanResourceModel::M2MModelChainConnection,\n      connection_2: humanResourceModel::M2MModelChainConnection2\n    ]\n  ];\n}", null, v);
return;
}
public void testToCheckForMultipleModelConnectionsForSameSourceClass()
{
java.util.List v;
org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar v;
v := @this: org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar;
v = staticinvoke <java.util.Collections: java.util.List singletonList(java.lang.Object)>("COMPILATION error at [60:1-75:1]: Multiple Connections available for Source Class - __Firm");
staticinvoke <org.finos.legend.engine.language.pure.compiler.test.fromGrammar.TestRuntimeCompilationFromGrammar: org.eclipse.collections.api.tuple.Pair test(java.lang.String,java.lang.String,java.util.List)>("###Pure\nClass modelToModel::test::Firm\n{\n  name: String[1];\n}\n\nClass modelToModel::test::_Firm\n{\n  name: String[1];\n}\n\nClass modelToModel::test::__Firm\n{\n  name: String[1];\n}\n\n\n###Mapping\nMapping modelToModel::test::BridgeToDestMapping\n(\n  modelToModel::test::Firm: Pure\n  {\n    ~src modelToModel::test::_Firm\n    name: \'|\' + $src.name + \'|\'\n  }\n)\n\nMapping modelToModel::test::SrcToBridgeMapping\n(\n  modelToModel::test::_Firm: Pure\n  {\n    ~src modelToModel::test::__Firm\n    name: \'$\' + $src.name + \'$\'\n  }\n)\n\n\n###Connection\nModelChainConnection modelToModel::test::OneMappingConnection\n{\n  mappings: [\n    modelToModel::test::SrcToBridgeMapping\n  ];\n}\n\nXmlModelConnection modelToModel::test::XmlConnection\n{\n  class: modelToModel::test::__Firm;\n  url: \'data:application/xml,<__Firm><name>FirmB</name></__Firm>\';\n}\n\nJsonModelConnection modelToModel::test::JsonConnection\n{\n  class: modelToModel::test::__Firm;\n  url: \'data:application/json,{\"name\":\"FirmA\"}\';\n}\n\n\n###Runtime\nRuntime modelToModel::test::DemoM2MModelChainConnectionRuntime\n{\n  mappings:\n  [\n    modelToModel::test::BridgeToDestMapping\n  ];\n  connections:\n  [\n    ModelStore:\n    [\n      connection_1: modelToModel::test::OneMappingConnection,\n      connection_2: modelToModel::test::JsonConnection,\n      connection_3: modelToModel::test::XmlConnection\n    ]\n  ];\n}", null, v);
return;
}
}