Merge: doc: fixed some typos and other misc. corrections
[nit.git] / src / test_neo.nit
1 # This file is part of NIT ( http://www.nitlanguage.org ).
2 #
3 # Licensed under the Apache License, Version 2.0 (the "License");
4 # you may not use this file except in compliance with the License.
5 # You may obtain a copy of the License at
6 #
7 # http://www.apache.org/licenses/LICENSE-2.0
8 #
9 # Unless required by applicable law or agreed to in writing, software
10 # distributed under the License is distributed on an "AS IS" BASIS,
11 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 # See the License for the specific language governing permissions and
13 # limitations under the License.
14
15 # Test for neo model saving and loading.
16 module test_neo
17
18 import neo
19 import model
20 import frontend
21
22 var test_id = "NIT_TESTING_ID".environ
23 var test_name = "test_{test_id}"
24
25 # init tool
26 var toolcontext = new ToolContext
27 toolcontext.tooldescription = "Usage: neo_saver host port files..."
28 toolcontext.process_options(args)
29 var arguments = toolcontext.option_context.rest
30
31 if arguments.length < 3 then
32 toolcontext.usage
33 exit 0
34 end
35
36 var host = arguments.shift
37 var port = arguments.shift
38 var url = "http://{host}:{port}"
39
40 # parse model
41 toolcontext.info("Parse files...", 1)
42 var org_model = new Model
43 var modelbuilder = new ModelBuilder(org_model, toolcontext)
44 modelbuilder.parse(arguments)
45 modelbuilder.run_phases
46
47 toolcontext.info("Open connection to neo4j on {url} for saving...", 1)
48 var save_client = new Neo4jClient(url)
49 var save_model = new NeoModel(test_name, toolcontext, save_client)
50 save_model.save(org_model)
51
52 toolcontext.info("Open connection to neo4j on {url} for reading...", 1)
53 var read_client = new Neo4jClient(url)
54 var neo_model = new Model
55 var read_model = new NeoModel(test_name, toolcontext, read_client)
56 read_model.load(neo_model)
57
58 # Compare model
59 var sorter = new MEntityNameSorter
60
61 print "# mpackages:"
62 var org_mpackages = org_model.mpackages.to_a
63 sorter.sort org_mpackages
64 print org_mpackages.join(" ")
65 print "------------------------------------"
66 var neo_mpackages = neo_model.mpackages.to_a
67 sorter.sort neo_mpackages
68 print neo_mpackages.join(" ")
69
70 print "\n# mmodules:"
71 var org_mmodules = org_model.mmodules.to_a
72 sorter.sort org_mmodules
73 print org_mmodules.join(" ")
74 print "------------------------------------"
75 var neo_mmodules = neo_model.mmodules.to_a
76 sorter.sort neo_mmodules
77 print neo_mmodules.join(" ")
78
79 print "\n# mclasses:"
80 var org_mclasses = org_model.mclasses.to_a
81 sorter.sort org_mclasses
82 print org_mclasses.join(" ")
83 print "------------------------------------"
84 var neo_mclasses = neo_model.mclasses.to_a
85 sorter.sort neo_mclasses
86 print neo_mclasses.join(" ")
87
88 print "\n# mproperties:"
89 var org_mproperties = org_model.mproperties.to_a
90 sorter.sort org_mproperties
91 print org_mproperties.join(" ")
92 print "------------------------------------"
93 var neo_mproperties = neo_model.mproperties.to_a
94 sorter.sort neo_mproperties
95 print neo_mproperties.join(" ")
96
97 print "\n# msignatures:"
98 for org_mprop in org_mproperties do
99 if not org_mprop isa MMethod then continue
100 print "{org_mprop.name}{org_mprop.intro.msignature or else ""}"
101 end
102 print "------------------------------------"
103 for neo_mprop in neo_mproperties do
104 if not neo_mprop isa MMethod then continue
105 print "{neo_mprop.name}{neo_mprop.intro.msignature or else ""}"
106 end