Пример #1
0
 def test_parse_cli(self):
     """
     @note   checks parse command line interface function and it's processing
     """
     # init values
     dut = ATWG()
     # check
     chamberArg, waveArg = dut.parse_cli([
         "--sine", "--riseTime=5sec", "--minTemp=5C", "--maxTemp=10c",
         "--chamber=ESPEC_SH641"
     ])
     self.assertDictEqual(
         waveArg, {
             'ts': 1,
             'tp': 3600,
             'wave': 'sine',
             'lowVal': 5,
             'highVal': 10,
             'tr': 5,
             'initVal': 10
         })
     self.assertDictEqual(chamberArg, {
         'chamber': 'ESPEC_SH641',
         'port': ""
     })
Пример #2
0
 def test_close(self):
     """
     @note   tests start function
     """
     # init values
     dut = ATWG()
     # check
     self.assertTrue(
         dut.open(chamberArg={
             'chamber': 'SIM',
             'port': ""
         },
                  waveArg={
                      'ts': 1,
                      'tp': 3600,
                      'wave': 'sine'
                  }))
     self.assertTrue(dut.close())
Пример #3
0
 def test_stop(self):
     """
     @note   tests start function
     """
     # init values
     dut = ATWG()
     # check, initVal added cause default comes from parse_cli
     self.assertTrue(
         dut.open(chamberArg={
             'chamber': 'SIM',
             'port': ""
         },
                  waveArg={
                      'ts': 1,
                      'tp': 3600,
                      'wave': 'sine',
                      'initVal': 25
                  }))
     self.assertTrue(dut.stop())
Пример #4
0
 def test_open(self):
     """
     @note   tests open method
     """
     # init values
     dut = ATWG()
     # exception: no selection
     with self.assertRaises(ValueError) as cm:
         dut.open()
     self.assertEqual(str(cm.exception), "Missing args")
     # exception: unsupported chamber
     with self.assertRaises(ValueError) as cm:
         dut.open(chamberArg={'chamber': 'unknown', 'port': ""}, waveArg={})
     self.assertEqual(str(cm.exception),
                      "Unsupported climate chmaber 'unknown' selected")
     # exception: unsupported waveform
     with self.assertRaises(ValueError) as cm:
         dut.open(chamberArg={
             'chamber': 'SIM',
             'port': ""
         },
                  waveArg={
                      'ts': 1,
                      'tp': 3600,
                      'wave': 'unknown'
                  })
     self.assertEqual(str(cm.exception),
                      "Unsupported waveform 'unknown' requested")
     # open in sim mode with sine wave
     self.assertTrue(
         dut.open(chamberArg={
             'chamber': 'SIM',
             'port': ""
         },
                  waveArg={
                      'ts': 1,
                      'tp': 3600,
                      'wave': 'sine'
                  }))
Пример #5
0
 def test_normalize_gradient(self):
     """
     @note   checks normalize dividend
     """
     # init values
     dut = ATWG()
     # check and convert
     self.assertDictEqual(dut.normalize_gradient(grad_sec=-0.04), {
         'val': -2.4,
         'base': 'm'
     })
     self.assertDictEqual(dut.normalize_gradient(grad_sec=0.04), {
         'val': 2.4,
         'base': 'm'
     })
     self.assertDictEqual(dut.normalize_gradient(grad_sec=1 / 3600), {
         'val': 1.0,
         'base': 'h'
     })
     self.assertDictEqual(dut.normalize_gradient(grad_sec=-1 / 3600), {
         'val': -1.0,
         'base': 'h'
     })
     self.assertDictEqual(dut.normalize_gradient(grad_sec=1 / (24 * 3600)),
                          {
                              'val': 1.0,
                              'base': 'd'
                          })
     self.assertDictEqual(dut.normalize_gradient(grad_sec=-1 / (24 * 3600)),
                          {
                              'val': -1.0,
                              'base': 'd'
                          })
     self.assertDictEqual(dut.normalize_gradient(grad_sec=0), {
         'val': 0,
         'base': 's'
     })
Пример #6
0
 def test_temp_grad_to_time(self):
     """
     @note   check slew temperature to slew time conversion function
     """
     # init values
     dut = ATWG()
     # check exception: no gradient
     with self.assertRaises(ValueError) as cm:
         dut.temp_grad_to_time()
     self.assertEqual(str(cm.exception), "No temperature gradient given")
     # check conversion
     self.assertEqual(
         dut.temp_grad_to_time(gradient="5sec", deltaTemp=None), 5)
     self.assertEqual(
         dut.temp_grad_to_time(gradient="2K/min", deltaTemp=10), 300)
Пример #7
0
 def test_status(self):
     """
     @note   tests formated string status function
     """
     # prepare
     dut = ATWG()
     self.assertTrue(
         dut.open(chamberArg={
             'chamber': 'SIM',
             'port': ""
         },
                  waveArg={
                      'ts': 1,
                      'tp': 3600,
                      'wave': 'sine',
                      'highVal': 60,
                      'lowVal': 10,
                      'initVal': 30
                  }))
     self.assertTrue(dut.start())
     self.assertTrue(dut.chamber_update())
     # construct expected string
     exp = ""
     exp += "\x1b[2J\n"  # delete complete output
     exp += "Arbitrary Temperature Waveform Generator\n"
     exp += "\n"
     exp += "  Chamber\n"
     exp += "    State    : Run -\n"
     exp += "    Type     : SIM\n"
     exp += "    Tmeas    : +20.00 °C\n"
     exp += "    Tset     : +30.02 °C\n"
     exp += "\n"
     exp += "  Waveform\n"
     exp += "    Shape    : sine\n"
     exp += "    Tmin     : +10.00 °C\n"
     exp += "    Tmax     : +60.00 °C\n"
     exp += "    Period   : 1h\n"
     exp += "    Gradient : +2.565 °C/m\n"
     exp += "\n"
     exp += "\n"
     exp += "Press 'CTRL + C' for exit\n"
     # test & compare
     self.assertEqual(dut.status(), exp)
Пример #8
0
 def test_start(self):
     """
     @note   tests start function
     """
     # init values
     dut = ATWG()
     # exception: not opend
     with self.assertRaises(ValueError) as cm:
         dut.start()
     self.assertEqual(str(cm.exception),
                      "Interfaces not opened, call methode 'open'")
     # start chamber in sim mode
     self.assertTrue(
         dut.open(chamberArg={
             'chamber': 'SIM',
             'port': ""
         },
                  waveArg={
                      'ts': 1,
                      'tp': 3600,
                      'wave': 'sine'
                  }))
     self.assertTrue(dut.start())
Пример #9
0
 def test_sec_to_time(self):
     """
     @note   checks time string to second conversion
     """
     # init values
     dut = ATWG()
     # check exception: no time string
     with self.assertRaises(ValueError) as cm:
         dut.sec_to_time()
     self.assertEqual(str(cm.exception), "No time provided")
     # check exception: neagtive number of seconds provided
     with self.assertRaises(ValueError) as cm:
         dut.sec_to_time(-25)
     self.assertEqual(str(cm.exception), "Only non-negativ secs allowed")
     # convert to string, blank separated
     self.assertEqual(dut.sec_to_time(129631), "1d 12h 31s")
     self.assertEqual(dut.sec_to_time(29), "29s")
     self.assertEqual(dut.sec_to_time(0), "0")
     self.assertEqual(dut.sec_to_time(61), "1m 1s")
     self.assertEqual(dut.sec_to_time(61.5), "1m 1.5s")
     # convert to string, colomn based
     self.assertEqual(dut.sec_to_time(sec=129731, sep=":"), "1:12:2:11")
Пример #10
0
 def test_time_to_sec(self):
     """
     @note   checks time string to second conversion
     """
     # init values
     dut = ATWG()
     # check exception: no time string
     with self.assertRaises(ValueError) as cm:
         dut.time_to_sec()
     self.assertEqual(str(cm.exception), "No time string provided")
     # check time in secs and numeric
     self.assertEqual(dut.time_to_sec(60), 60)
     # check time strin in pure seconds
     self.assertEqual(dut.time_to_sec("145"), 145)
     # check positional strings, format 'd:h:m:s'
     self.assertEqual(dut.time_to_sec("::30"), 30)
     self.assertEqual(dut.time_to_sec("02:30"), 150)
     self.assertEqual(dut.time_to_sec("01:02:30"), 3750)
     self.assertEqual(dut.time_to_sec("1.5:::"), 129600)
     # check with time units
     self.assertEqual(dut.time_to_sec("2day 2h"), 180000)
     self.assertEqual(dut.time_to_sec("1.5day 2.5h"), 138600)
     # check without numeric base
     self.assertEqual(dut.time_to_sec("h"), 3600)
     self.assertEqual(dut.time_to_sec("min"), 60)
     self.assertEqual(dut.time_to_sec("sec"), 1)