source: java/main/src/test/java/com/framsticks/parsers/F0ParserTest.java @ 193

Last change on this file since 193 was 193, checked in by Maciej Komosinski, 10 years ago

Set svn:eol-style native for all textual files

  • Property svn:eol-style set to native
File size: 5.1 KB
Line 
1package com.framsticks.parsers;
2
3import org.testng.annotations.*;
4
5import com.framsticks.model.*;
6import com.framsticks.model.f0.Schema;
7import com.framsticks.model.f0.SchemaBuilder;
8import com.framsticks.params.*;
9import com.framsticks.params.types.FloatParam;
10import com.framsticks.params.types.StringParam;
11import com.framsticks.test.TestConfiguration;
12import com.framsticks.util.math.Point3d;
13
14import java.io.IOException;
15import java.text.ParseException;
16import java.util.List;
17import static org.fest.assertions.Assertions.*;
18import static org.fest.assertions.Delta.*;
19import static com.framsticks.params.ParamsUtil.getParam;
20
21/**
22 * Author: Piotr Śniegowski
23 */
24public class F0ParserTest extends TestConfiguration {
25
26        private Schema schema;
27        private List<Access> accesses;
28        private List<ModelComponent> components;
29        private Model model;
30
31        @BeforeClass
32        public void setUp() throws Exception {
33                schema = new SchemaBuilder().stream(Schema.getDefaultDefinitionAsStream()).finish();
34        }
35
36        @Test
37        public void checkFramsClasses() {
38                FramsClass modelClass = schema.getRegistry().getFramsClass("Model");
39                assertThat(modelClass).isNotNull();
40                assertThat(modelClass.getParam("se")).isInstanceOf(FloatParam.class);
41                // assertThat(modelClass.getParam("energ0")).isInstanceOf(FloatParam.class);
42                assertThat(modelClass.getParam("Vstyle")).isInstanceOf(StringParam.class);
43                assertThat(modelClass.getParamCount()).isEqualTo(6);
44                // assertThat();
45
46        }
47
48        @Test(dependsOnMethods = "checkFramsClasses")
49        public void primitiveParam() {
50                FramsClass joint = schema.getFramsClass("j");
51                PrimitiveParam<?> dx = getParam(joint, "dx", PrimitiveParam.class);
52                assertThat(dx).isInstanceOf(FloatParam.class);
53                assertThat(schema.getNeuroClasses().size()).isEqualTo(21);
54                assertThat(dx.getName()).isEqualTo("delta.x");
55                assertThat(dx.getMin(Double.class)).isEqualTo(-2.0, delta(0.0));
56
57                assertThat(getParam(schema.getRegistry().getFramsClass("n"), "d", StringParam.class).getDef(String.class)).isEqualTo("N");
58        }
59
60        @Test(dependsOnMethods = "primitiveParam")
61        public void readF0() throws IOException, ParseException {
62                assertThat(schema.getFramsClass("p")).isInstanceOf(FramsClass.class);
63                assertThat(getParam(schema.getRegistry().getFramsClass("p"), "as", FloatParam.class).getDef(Double.class)).isEqualTo(0.25, delta(0.0));
64
65                accesses = new F0Parser(schema, F0ParserTest.class.getResourceAsStream("/parsers/f0_example.txt")).parse();
66
67                assertThat(accesses.size()).isEqualTo(19);
68                assertThat(accesses.get(0).getSelected()).isInstanceOf(Model.class);
69                assertThat(accesses.get(5).get("i", String.class)).isEqualTo("1,2,3,\"dsadsa,,,,");
70                assertThat(accesses.get(7).get("d", String.class)).isEqualTo("|:p=0.25,r=1");
71                assertThat(accesses.get(10).get("d", String.class)).isEqualTo("@:p=0.25");
72        }
73
74        @Test(dependsOnMethods = {"readF0"})
75        public void stripAccess() {
76                components = ParamsUtil.stripAccess(accesses, ModelComponent.class);
77
78                assertThat(components.get(1)).isInstanceOf(Part.class);
79                assertThat(components.get(4)).isInstanceOf(Joint.class);
80                assertThat(components.get(6)).isInstanceOf(NeuroDefinition.class);
81                assertThat(components.get(12)).isInstanceOf(NeuroConnection.class);
82        }
83
84        @Test(dependsOnMethods = {"stripAccess"})
85        public void buildModel() {
86                model = new ModelBuilder().addComponents(components).finish();
87
88                assertThat(model.getParts().size()).isEqualTo(3);
89                assertThat(model.getNeuroDefinitions().size()).isEqualTo(6);
90                assertThat(model.getJoints().size()).isEqualTo(2);
91                assertThat(model.getNeuroConnections().size()).isEqualTo(7);
92
93                assertThat(model.getParts().get(1).getPosition().x).isEqualTo(2.0, delta(0.0));
94                assertThat(model.getParts().get(2).getPosition().sub(new Point3d(2.27236, -0.0792596, -0.958924)).length()).describedAs("position error").isLessThan(0.0001);
95                assertThat(model.getParts().get(2).getOrientation().y.sub(new Point3d(0.870277, -0.404792, 0.280644)).length()).isLessThan(0.0001);
96
97                assertThat(model.getJoints().get(0).part1).isEqualTo(0);
98                assertThat(model.getJoints().get(0).part2).isEqualTo(1);
99
100                assertThat(model.getNeuroDefinitions().get(0).part).isEqualTo(1);
101                assertThat(model.getNeuroDefinitions().get(0).joint).isEqualTo(-1);
102                assertThat(model.getNeuroDefinitions().get(1).details).isEqualTo("|:p=0.25,r=1");
103                assertThat(model.getNeuroDefinitions().get(3).details).isEqualTo("N");
104                assertThat(model.getNeuroDefinitions().get(4).part).isEqualTo(-1);
105
106                assertThat(model.getNeuroConnections().get(2).connectedNeuro).isEqualTo(0);
107                assertThat(model.getNeuroConnections().get(5).weight).isEqualTo(5.6, delta(0.0));
108
109        }
110
111        @Test(dependsOnMethods = {"buildModel"})
112        public void print() throws Exception {
113                ListSink sink = new ListSink();
114
115                new F0Writer(schema, model, sink).write();
116
117                assertThat(sink.getOut()).containsExactly(
118                        "p:",
119                        "p:2.0,i=,Vstyle=",
120                        "p:2.272364001928095,-0.07925961087140347,-0.9589242746631385,i=bla",
121                        "j:0,1,dx=2.0",
122                        "j:1,2,rx=8.0,5.0,6.0,dx=1.0,i=\"1,2,3,\\\"dsadsa,,,,\"",
123                        "n:p=1",
124                        "n:j=0,d=\"|:p=0.25,r=1\"",
125                        "n:j=0,d=G",
126                        "n:p=1",
127                        "n:j=0,d=@:p=0.25",
128                        "n:p=1,d=Nu",
129                        "c:0,2",
130                        "c:0,2,5.4",
131                        "c:1,0",
132                        "c:2,0,3.4",
133                        "c:0,1,4.5",
134                        "c:1,0,5.6",
135                        "c:2,1",
136                        "m:"
137                );
138
139        }
140}
Note: See TracBrowser for help on using the repository browser.