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

Last change on this file since 78 was 78, checked in by psniegowski, 11 years ago

Add f0 parsing and f0->Model transformation.

File size: 2.8 KB
Line 
1package com.framsticks.parsers;
2
3import com.framsticks.model.*;
4import com.framsticks.model.Package;
5import com.framsticks.params.*;
6import com.framsticks.params.types.FloatParam;
7import com.framsticks.util.Point3d;
8import org.apache.log4j.PropertyConfigurator;
9import org.junit.Test;
10
11import java.util.List;
12
13import static org.junit.Assert.*;
14
15/**
16 * Author: Piotr Śniegowski
17 */
18public class F0ParserTest {
19
20        @Test
21        public void testParser() throws Exception {
22                PropertyConfigurator.configure(getClass().getResource("/log4j.properties"));
23                //testing schema
24                Schema schema = new Schema(Schema.getDefaultDefinitionAsStream());
25
26                {
27                        FramsClass joint = schema.getRegistry().getInfoFromCache("j");
28                        Param dx = joint.getParamEntry("dx");
29                        assertEquals(FloatParam.class, dx.getClass());
30                        assertEquals(21, schema.getNeuroClasses().size());
31                        assertEquals("delta.x", dx.getName());
32                        assertEquals(-2.0, dx.getMin(Double.class), 0.0);
33                }
34
35                Package.register(schema.getRegistry());
36                //testing parser
37                List<AccessInterface> accesses = new F0Parser(schema, F0ParserTest.class.getResourceAsStream("/parsers/f0_example.txt")).parse();
38
39                {
40                        assertEquals(12, accesses.size());
41                        assertTrue(accesses.get(0).getSelected() instanceof F0Genotype);
42                        assertEquals("1,2,3,\"dsadsa,,,,", accesses.get(5).get("i", String.class));
43                        assertEquals("|:p=0.25,r=1", accesses.get(7).get("d", String.class));
44                        assertEquals("@:p=0.25", accesses.get(10).get("d", String.class));
45                }
46
47                List<Object> objects = Util.stripAccessInterface(accesses);
48                {
49                        assertEquals(Part.class, objects.get(1).getClass());
50                        assertEquals(Joint.class, objects.get(4).getClass());
51                        assertEquals(NeuroDef.class, objects.get(6).getClass());
52                }
53
54                F0Genotype f0Genotype = Genotype.build(objects);
55                {
56                        assertEquals(3, f0Genotype.getParts().size());
57                        assertEquals(6, f0Genotype.getNeuroDefs().size());
58                        assertEquals(2, f0Genotype.getJoints().size());
59
60                        assertEquals(new Integer(0), f0Genotype.getJoints().get(0).part1);
61                        assertEquals(new Integer(1), f0Genotype.getJoints().get(0).part2);
62                        assertEquals(new Integer(1), f0Genotype.getNeuroDefs().get(0).part);
63                        assertEquals(new Integer(-1), f0Genotype.getNeuroDefs().get(0).joint);
64                        assertEquals("|:p=0.25,r=1", f0Genotype.getNeuroDefs().get(1).details);
65                        assertEquals("N", f0Genotype.getNeuroDefs().get(3).details);
66                        assertEquals(new Integer(-1), f0Genotype.getNeuroDefs().get(4).part);
67                }
68
69                F0Model f0model = F0Model.build(f0Genotype);
70                {
71                        assertEquals(2.0, f0model.getMechParts().get(1).getPosition().x, 0.0);
72                        assertTrue(f0model.getMechParts().get(2).getPosition().sub(new Point3d(2.27236, -0.0792596, -0.958924)).length() < 0.0001);
73                        assertTrue(f0model.getMechParts().get(2).getOrientation().y.sub(new Point3d(0.870277, -0.404792, 0.280644)).length() < 0.0001);
74                }
75
76        }
77}
Note: See TracBrowser for help on using the repository browser.