/ tests / halmodule.0 / test.sh
test.sh
 1  #!/bin/sh
 2  realtime start
 3  python <<EOF
 4  import hal
 5  import os
 6  h = hal.component("x")
 7  try:
 8      ps = h.newpin("s", hal.HAL_S32, hal.HAL_OUT);
 9      pu = h.newpin("u", hal.HAL_U32, hal.HAL_OUT);
10      pf = h.newpin("f", hal.HAL_FLOAT, hal.HAL_OUT);
11      param = h.newparam("param", hal.HAL_BIT, hal.HAL_RW)
12      h.ready()
13  
14      def try_set(p, v):
15          try:
16              h[p] = v
17              print "set", p, v, h[p]
18          except (ValueError, OverflowError):
19              print "set", p, v, "fail"
20  
21      def try_set_pin(p, v):
22          try:
23              p.set(v)
24              print "set", p.get_name(), v, p.get()
25          except (ValueError, OverflowError):
26              print "set", p.get_name(), v, "fail"
27  
28      try_set("s", -1)
29      try_set("s", 0)
30      try_set("s", 1)
31      try_set("s", -1l)
32      try_set("s", 0l)
33      try_set("s", 1l)
34      try_set("s", 0x7fffffff)
35      try_set("s", -0x80000000)
36  
37      try_set("u", 0)
38      try_set("u", 1)
39      try_set("u", 0xffffffffl)
40  
41      try_set("f", 0)
42      try_set("f", 0.0)
43      try_set("f", 0l)
44      try_set("f", -1)
45      try_set("f", -1.0)
46      try_set("f", -1l)
47      try_set("f", 1)
48      try_set("f", 1.0)
49      try_set("f", 1l)
50  
51      try_set("f", 1l<<1023)
52  
53  
54      try_set("s", 0x80000000)
55      try_set("s", -0x80000001)
56  
57      try_set("u", -1)
58      try_set("u", 1<<32)
59      
60      try_set("f", 1l<<1024)
61  
62      pin = h.getitem("s")
63  
64      def pin_validate(i, t, d):
65          print "pincheck", i.get_name(), i.is_pin(), i.get_type() == t, i.get_dir() == d
66      pin_validate(ps, hal.HAL_S32, hal.HAL_OUT)
67      pin_validate(pu, hal.HAL_U32, hal.HAL_OUT)
68      pin_validate(pf, hal.HAL_FLOAT, hal.HAL_OUT)
69  
70      pin = h.getitem("s")
71      pin_validate(pin, hal.HAL_S32, hal.HAL_OUT)
72      try:
73          pin = h.getitem("not-found")
74          print "getitem", "not-found", "ok"
75      except:
76          print "getitem", "not-found", "fail"
77  
78      pin_validate(param, hal.HAL_BIT, hal.HAL_RW)
79      param = h.getitem("param")
80      pin_validate(param, hal.HAL_BIT, hal.HAL_RW)
81  
82      try_set_pin(pu, 0)
83      try_set_pin(pu, -1)
84  except:
85      import traceback
86      print "Exception:", traceback.format_exc()
87      raise
88  finally:
89      h.exit()
90  EOF
91  realtime stop