Project

General

Profile

Statistics
| Branch: | Tag: | Revision:

lustrec / src / tools / stateflow / json-parser / test_json_parser_variables.ml @ 5c0d6e4e

History | View | Annotate | Download (5.88 KB)

1
open Basetypes
2
open Corelang
3
open Datatype
4
open Json_parser
5
open LustreSpec
6
open OUnit2
7

    
8
module ParseExt =
9
struct
10
  let parse_condition _ = Condition.tru
11
  let parse_action    _ = Action.nil
12
  let parse_event json  = Some Yojson.Basic.(json |> to_string)
13
end
14

    
15
module Parse = Parser (ParseExt)
16

    
17
let location = Location.dummy_loc
18

    
19
let test_var_skeleton var id var_type value =
20
  begin
21
    assert_bool
22
      "orig for user variables should be true"
23
      var.var_orig;
24
    assert_bool
25
      "user variables are considered as constants"
26
      var.var_dec_const;
27
    assert_equal
28
      ~msg:("problem with variable " ^ var.var_id ^ " clock type")
29
      var.var_dec_clock.ck_dec_desc
30
      Ckdec_any;
31
    assert_equal
32
      ~msg:("problem with variable " ^ var.var_id ^ " ident")
33
      var.var_id
34
      id;
35
    assert_equal
36
      ~msg:("problem with variable " ^ var.var_id ^ " type")
37
      var.var_dec_type.ty_dec_desc
38
      var_type;
39
    match var.var_dec_value with
40
    | Some { expr_desc = d } ->
41
      assert_equal
42
        ~msg:("problem with variable " ^ var.var_id ^ " value")
43
        d
44
        value
45
    | _       -> raise (OUnitTest.OUnit_failure
46
                          "User variables should have an initial value")
47
  end
48

    
49
let test_simple_var_bool_false tests_ctxt =
50
  let prog = Parse.parse_prog
51
      (Yojson.Basic.from_file "../data-test/simple-var-bool-false.json") in
52
  match prog with
53
  | Program ("simple_var_bool_false", [ ], [ x ]) ->
54
    test_var_skeleton x "my_bool_var_false"
55
      Tydec_bool (Expr_const (Const_tag tag_false))
56
  | _ -> raise (OUnitTest.OUnit_failure
57
                  "Program obtained from simple-var-bool-false.json is not correct")
58

    
59
let test_simple_var_bool_true tests_ctxt =
60
  let prog = Parse.parse_prog
61
      (Yojson.Basic.from_file "../data-test/simple-var-bool-true.json") in
62
  match prog with
63
  | Program ("simple_var_bool_true", [ ], [ x ]) ->
64
    test_var_skeleton x "my_bool_var_true"
65
      Tydec_bool (Expr_const (Const_tag tag_true))
66
  | _ -> raise (OUnitTest.OUnit_failure
67
                  "Program obtained from simple-var-bool-true.json is not correct")
68

    
69
let test_simple_var_int_zero tests_ctxt =
70
  let prog = Parse.parse_prog
71
      (Yojson.Basic.from_file "../data-test/simple-var-int-zero.json") in
72
  match prog with
73
  | Program ("simple_var_int_zero", [ ], [ x ]) ->
74
    test_var_skeleton x "my_int_var_zero"
75
      Tydec_int (Expr_const (Const_int 0))
76
  | _ -> raise (OUnitTest.OUnit_failure
77
                  "Program obtained from simple-var-int-zero.json is not correct")
78

    
79
let test_simple_var_int_pos tests_ctxt =
80
  let prog = Parse.parse_prog
81
      (Yojson.Basic.from_file "../data-test/simple-var-int-pos.json") in
82
  match prog with
83
  | Program ("simple_var_int_pos", [ ], [ x ]) ->
84
    test_var_skeleton x "my_int_var_pos"
85
      Tydec_int (Expr_const (Const_int 2))
86
  | _ -> raise (OUnitTest.OUnit_failure
87
                  "Program obtained from simple-var-int-pos.json is not correct")
88

    
89
let test_simple_var_int_neg tests_ctxt =
90
  let prog = Parse.parse_prog
91
      (Yojson.Basic.from_file "../data-test/simple-var-int-neg.json") in
92
  match prog with
93
  | Program ("simple_var_int_neg", [ ], [ x ]) ->
94
    test_var_skeleton x "my_int_var_neg"
95
      Tydec_int (Expr_const (Const_int (-5)))
96
  | _ -> raise (OUnitTest.OUnit_failure
97
                  "Program obtained from simple-var-int-neg.json is not correct")
98

    
99
let test_simple_var_real_zero tests_ctxt =
100
  let prog = Parse.parse_prog
101
      (Yojson.Basic.from_file "../data-test/simple-var-real-zero.json") in
102
  match prog with
103
  | Program ("simple_var_real_zero", [ ], [ x ]) ->
104
    test_var_skeleton x "my_real_var_zero"
105
      Tydec_real (Expr_const (Const_real (Num.num_of_int 0, 1, "0.0")))
106
  | _ -> raise (OUnitTest.OUnit_failure
107
                  "Program obtained from simple-var-real-zero.json is not correct")
108

    
109
let test_simple_var_real_pos tests_ctxt =
110
  let prog = Parse.parse_prog
111
      (Yojson.Basic.from_file "../data-test/simple-var-real-pos.json") in
112
  match prog with
113
  | Program ("simple_var_real_pos", [ ], [ x ]) ->
114
    test_var_skeleton x "my_real_var_pos"
115
      Tydec_real (Expr_const (Const_real (Num.num_of_int 2115, 2, "21.15")))
116
  | _ -> raise (OUnitTest.OUnit_failure
117
                  "Program obtained from simple-var-real-pos.json is not correct")
118

    
119
let test_simple_var_real_neg tests_ctxt =
120
  let prog = Parse.parse_prog
121
      (Yojson.Basic.from_file "../data-test/simple-var-real-neg.json") in
122
  match prog with
123
  | Program ("simple_var_real_neg", [ ], [ x ]) ->
124
    test_var_skeleton x "my_real_var_neg"
125
      Tydec_real (Expr_const (Const_real (Num.num_of_int (-224), 2, "-2.24")))
126
  | _ -> raise (OUnitTest.OUnit_failure
127
                  "Program obtained from simple-var-real-neg.json is not correct")
128

    
129
let test_simple_var_real_wo_dec tests_ctxt =
130
  let prog = Parse.parse_prog
131
      (Yojson.Basic.from_file "../data-test/simple-var-real-wo-dec.json") in
132
  match prog with
133
  | Program ("simple_var_real_wo_dec", [ ], [ x ]) ->
134
    test_var_skeleton x "my_real_var_wo_dec"
135
      Tydec_real (Expr_const (Const_real (Num.num_of_int 2500, 0, "2500")))
136
  | _ -> raise (OUnitTest.OUnit_failure
137
                  "Program obtained from simple-var-real-wo-dec.json is not correct")
138

    
139
let var_suite =
140
  "suite for variables" >:::
141
  [ "simple test for variable (boolean, false)" >::
142
    test_simple_var_bool_false;
143
    "simple test for variable (boolean, true)"  >::
144
    test_simple_var_bool_true;
145
    "simple test for variable (int, 0)"  >::
146
    test_simple_var_int_zero;
147
    "simple test for variable (int, 2)"  >::
148
    test_simple_var_int_pos;
149
    "simple test for variable (int, -5)"  >::
150
    test_simple_var_int_neg;
151
    "simple test for variable (real, 0.0)"  >::
152
    test_simple_var_real_zero;
153
    "simple test for variable (real, 21.15)"  >::
154
    test_simple_var_real_pos;
155
    "simple test for variable (real, -2.24)"  >::
156
    test_simple_var_real_neg;
157
    "simple test for variable (real, 2500)"  >::
158
    test_simple_var_real_wo_dec;
159
  ]
160

    
161
let _ =
162
  run_test_tt_main var_suite