class TestAWGTransferInterface(object):

    def setup(self):
        self.root = RootTask(should_stop=Event(), should_pause=Event())
        self.task = TransferPulseSequenceTask(task_name='Test')
        self.root.children_task.append(self.task)
        self.root.run_time['drivers'] = {'AWG5014B': InstrHelper}
        self.root.write_in_database('int', 2)

        self.sequence = RootSequence()
        self.context = AWGContext()
        self.sequence.context = self.context
        self.sequence.external_vars = {'a': None}
        pulse1 = Pulse(def_1='1.0', def_2='{a}', channel='Ch1_M1')
        pulse2 = Pulse(def_1='{a} + 1.0', def_2='4.0', channel='Ch1_M1')
        pulse3 = Pulse(def_1='{2_stop} + 0.5', def_2='10', channel='Ch1_M1')
        self.sequence.items.extend([pulse1, pulse2, pulse3])

        self.task.sequence = self.sequence
        self.task.sequence_vars = {'a': '{Root_int}'}

        interface = AWGTransferInterface(task=self.task)
        self.task.interface = interface

        self.task.selected_driver = 'AWG5014B'
        self.task.selected_profile = 'Test1'

        def get_ch(s, ch):
            return InstrHelper(({'output_state': 'OFF'},
                                {'select_sequence': lambda s, se: None}))
        prof = ({'owner': [None], 'defined_channels': ('Ch1',)},
                {'get_channel': get_ch, 'to_send': lambda s, se: None})
        self.root.run_time['profiles'] = {'Test1': prof}

    def test_perform(self):
        self.task.perform()
Beispiel #2
0
class TestSaveArrayTask(object):

    test_dir = TEST_PATH

    @classmethod
    def setup_class(cls):
        print complete_line(
            __name__ + ':{}.setup_class()'.format(cls.__name__), '-', 77)
        os.mkdir(cls.test_dir)

    @classmethod
    def teardown_class(cls):
        print complete_line(
            __name__ + ':{}.teardown_class()'.format(cls.__name__), '-', 77)
        # Removing pref files creating during tests.
        try:
            shutil.rmtree(cls.test_dir)

        # Hack for win32.
        except OSError:
            print 'OSError'
            dirs = os.listdir(cls.test_dir)
            for directory in dirs:
                shutil.rmtree(os.path.join(cls.test_dir), directory)
            shutil.rmtree(cls.test_dir)

    def setup(self):
        self.root = RootTask(should_stop=Event(), should_pause=Event())
        self.task = SaveArrayTask(task_name='Test')
        self.root.children_task.append(self.task)

        array = np.empty(2, dtype=np.dtype([('a', 'f8'), ('b', 'f8')]))
        array[0] = (0, 1)
        array[1] = (2, 3)
        self.root.write_in_database('array', array)
        self.root.write_in_database('float', 2.0)
        self.root.write_in_database('str', 'a')

    def teardown(self):
        folder = self.test_dir
        for the_file in os.listdir(folder):
            file_path = os.path.join(folder, the_file)
            if os.path.isfile(file_path):
                os.remove(file_path)

    def test_check1(self):
        # Check everything ok in Text mode.
        array = np.empty(2, dtype=np.dtype([('a', 'f8'), ('b', 'f8')]))
        self.root.write_in_database('arrays', {'a': array})
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test_perform{Root_str}.txt'
        task.mode = 'Text file'
        task.header = 'teststs'
        task.target_array = '{Root_arrays}["a"]'

        test, traceback = task.check()

        assert_true(test)
        assert_false(traceback)
        assert_false(
            os.path.isfile(os.path.join(self.test_dir, 'test_performa.txt')))

    def test_check2(self):
        # Check everything ok in Binary mode (wrong file extension, and header)
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test_perform{Root_str}.txt'
        task.mode = 'Binary file'
        task.header = 'teststs'
        task.target_array = '{Root_array}'

        test, traceback = task.check()

        assert_true(test)
        assert_equal(len(traceback), 2)
        assert_in('root/Test-header', traceback)
        assert_in('root/Test-file_ext', traceback)
        assert_false(
            os.path.isfile(os.path.join(self.test_dir, 'test_performa.npy')))

    def test_check3(self):
        # Check handling a wrong folder.
        task = self.task
        task.folder = self.test_dir + '{eee}'

        test, traceback = task.check()

        assert_false(test)
        assert_equal(len(traceback), 1)

    def test_check4(self):
        # Check handling a wrong filename.
        task = self.task
        task.folder = self.test_dir
        task.filename = '{rr}'

        test, traceback = task.check()

        assert_false(test)
        assert_equal(len(traceback), 1)

    def test_check5(self):
        # Check handling a wrong database address.
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test_perform{Root_str}.txt'
        task.mode = 'Text file'
        task.header = 'teststs'
        task.target_array = '**{Root_array}'

        test, traceback = task.check()

        assert_false(test)
        assert_equal(len(traceback), 1)

    def test_check6(self):
        # Check handling a wrong type.
        self.root.write_in_database('array', 1.0)
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test_perform{Root_str}.txt'
        task.mode = 'Text file'
        task.header = 'teststs'
        task.target_array = '{Root_array}'

        test, traceback = task.check()

        assert_false(test)
        assert_equal(len(traceback), 1)

    def test_perform1(self):
        # Test performing in text mode.
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test_perform{Root_str}.txt'
        task.mode = 'Text file'
        task.header = 'tests'
        task.target_array = '{Root_array}'

        task.perform()

        path = os.path.join(self.test_dir, 'test_performa.txt')
        assert_true(os.path.isfile(path))
        with open(path) as f:
            lines = f.readlines()
            assert_equal(lines[0:2], ['# tests\n', 'a\tb\n'])
            assert_equal([float(x) for x in lines[2][:-1].split('\t')],
                         [0.0, 1.0])
            assert_equal([float(x) for x in lines[3][:-1].split('\t')],
                         [2.0, 3.0])

    def test_perform1bis(self):
        # Test performing in text mode wrong type.
        self.root.write_in_database('array', 1.0)
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test_perform{Root_str}.txt'
        task.mode = 'Text file'
        task.header = 'tests'
        task.target_array = '{Root_array}'

        assert_raises(AssertionError, task.perform)

    def test_perform2(self):
        # Test performing in binary mode.
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test_perform{Root_str}.npy'
        task.mode = 'Binary file'
        task.target_array = '{Root_array}'

        task.perform()

        path = os.path.join(self.test_dir, 'test_performa.npy')
        assert_true(os.path.isfile(path))
        a = np.load(path)
        np.testing.assert_array_equal(a, task.get_from_database('Root_array'))
Beispiel #3
0
class TestSaveTask(object):

    test_dir = TEST_PATH

    @classmethod
    def setup_class(cls):
        print complete_line(
            __name__ + ':{}.setup_class()'.format(cls.__name__), '-', 77)
        os.mkdir(cls.test_dir)

    @classmethod
    def teardown_class(cls):
        print complete_line(
            __name__ + ':{}.teardown_class()'.format(cls.__name__), '-', 77)
        # Removing pref files creating during tests.
        try:
            shutil.rmtree(cls.test_dir)

        # Hack for win32.
        except OSError:
            print 'OSError'
            dirs = os.listdir(cls.test_dir)
            for directory in dirs:
                shutil.rmtree(os.path.join(cls.test_dir), directory)
            shutil.rmtree(cls.test_dir)

    def setup(self):
        self.root = RootTask(should_stop=Event(), should_pause=Event())
        self.task = SaveTask(task_name='Test')
        self.root.children_task.append(self.task)

        self.root.write_in_database('int', 1)
        self.root.write_in_database('float', 2.0)
        self.root.write_in_database('str', 'a')

    def teardown(self):
        folder = self.test_dir
        for the_file in os.listdir(folder):
            file_path = os.path.join(folder, the_file)
            if os.path.isfile(file_path):
                os.remove(file_path)

    def test_saving_target_observer(self):
        self.task.saving_target = 'Array'

        assert_equal(self.task.get_from_database('Test_array'),
                     np.array([1.0]))

        self.task.saving_target = 'File'

        aux = self.task.accessible_database_entries()
        assert_not_in('Test_array', aux)

        self.task.saving_target = 'File and array'

        assert_equal(self.task.get_from_database('Test_array'),
                     np.array([1.0]))

    def test_check1(self):
        # Test everything ok in file mode (no array size).
        task = self.task
        task.saving_target = 'File'
        task.folder = self.test_dir
        task.filename = 'test{Root_int}.txt'
        task.file_mode = 'New'
        task.header = 'test'
        task.saved_values = [('toto', '{Root_str}'), ('tata', '{Root_float}')]
        file_path = os.path.join(self.test_dir, 'test1.txt')

        test, traceback = task.check()
        assert_true(test)
        assert_false(traceback)
        assert_false(os.path.isfile(file_path))
        assert_false(task.initialized)

        task.file_mode = 'Add'

        test, traceback = task.check()
        assert_true(test)
        assert_false(traceback)
        assert_true(os.path.isfile(file_path))
        os.remove(file_path)

    def test_check2(self):
        # Test everything of in array mode (assert database state).
        task = self.task
        task.saving_target = 'Array'
        task.array_size = '1000*{Root_float}'
        task.saved_values = [('toto', '{Root_str}'), ('tata', '{Root_float}')]

        test, traceback = task.check()
        assert_true(test)
        assert_false(traceback)
        array = task.get_from_database('Test_array')
        assert_equal(array.dtype.names, ('toto', 'tata'))

    def test_check3(self):
        # Test everything is ok in file & array mode.
        task = self.task
        task.saving_target = 'File and array'
        task.folder = self.test_dir
        task.filename = 'test_rr.txt'
        task.file_mode = 'New'
        task.header = 'test'
        task.array_size = '1000*{Root_float}'
        task.saved_values = [('toto', '{Root_str}'), ('tata', '{Root_float}')]
        file_path = os.path.join(self.test_dir, 'test_rr.txt')

        test, traceback = task.check()
        assert_true(test)
        assert_false(traceback)
        assert_false(os.path.isfile(file_path))
        array = task.get_from_database('Test_array')
        assert_equal(array.dtype.names, ('toto', 'tata'))

    def test_check4(self):
        # Test check issues in file mode : folder.
        task = self.task
        task.saving_target = 'File'
        task.folder = self.test_dir + '{tt}'

        test, traceback = task.check()
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 1)

    def test_check5(self):
        # Test check issues in file mode : file.
        task = self.task
        task.saving_target = 'File'
        task.folder = self.test_dir
        task.filename = 'test{tt}.txt'

        test, traceback = task.check()
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 1)

    def test_check6(self):
        # Test check issues in file mode : array_size.
        task = self.task
        task.saving_target = 'File'
        task.folder = self.test_dir + '{tt}'
        task.filename = 'test.txt'
        task.file_mode = 'New'
        task.header = 'test'
        task.array_size = '1000*'
        task.saved_values = [('toto', '{Root_str}'), ('tata', '{Root_float}')]
        file_path = os.path.join(self.test_dir, 'test.txt')

        test, traceback = task.check()
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 1)
        assert_false(os.path.isfile(file_path))

    def test_check7(self):
        # Test check issues in array mode  : wrong array_size.
        task = self.task
        task.saving_target = 'Array'
        task.array_size = '1000*{Root_float}*'
        task.saved_values = [('toto', '{Root_str}'), ('tata', '{Root_float}')]

        test, traceback = task.check()
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 1)
        assert_equal(self.task.get_from_database('Test_array'),
                     np.array([1.0]))

    def test_check8(self):
        # Test check issues in array mode : absent array_size.
        task = self.task
        task.saving_target = 'Array'
        task.saved_values = [('toto', '{Root_str}'), ('tata', '{Root_float}')]

        test, traceback = task.check()
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 1)
        assert_equal(self.task.get_from_database('Test_array'),
                     np.array([1.0]))

    def test_check9(self):
        # Test check issues in entrie.
        task = self.task
        task.saving_target = 'Array'
        task.array_size = '1000*{Root_float}'
        task.saved_values = [('toto', '{Root_str*}'),
                             ('tata', '{Root_float*}')]

        test, traceback = task.check()
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 2)
        array = task.get_from_database('Test_array')
        assert_equal(array.dtype.names, ('toto', 'tata'))

    def test_check10(self):
        # Test warning in case the file already exists in new mode.
        task = self.task
        task.saving_target = 'File'
        task.folder = self.test_dir
        task.filename = 'test_e.txt'
        task.file_mode = 'New'
        task.header = 'test'
        task.saved_values = [('toto', '{Root_str}'), ('tata', '{Root_float}')]
        file_path = os.path.join(self.test_dir, 'test_e.txt')
        with open(file_path, 'w'):
            pass

        assert_true(os.path.isfile(file_path))
        test, traceback = task.check()
        assert_true(test)
        assert_true(traceback)
        assert_true(os.path.isfile(file_path))

    def test_perform1(self):
        # Test performing in mode file. (Call three times perform)
        task = self.task
        task.saving_target = 'File'
        task.folder = self.test_dir
        task.filename = 'test_perform{Root_int}.txt'
        task.file_mode = 'Add'
        task.header = 'test'
        task.array_size = '3'
        task.saved_values = [('toto', '{Root_str}'), ('tata', '{Root_float}')]
        file_path = os.path.join(self.test_dir, 'test_perform1.txt')

        with open(file_path, 'w') as f:
            f.write('test\n')

        task.perform()

        assert_true(task.initialized)
        assert_true(task.file_object)
        assert_equal(task.line_index, 1)
        with open(file_path) as f:
            a = f.readlines()
            assert_equal(a, ['test\n', '# test\n', 'toto\ttata\n', 'a\t2.0\n'])

        task.perform()

        assert_true(task.initialized)
        assert_equal(task.line_index, 2)
        with open(file_path) as f:
            a = f.readlines()
            assert_equal(
                a,
                ['test\n', '# test\n', 'toto\ttata\n', 'a\t2.0\n', 'a\t2.0\n'])

        task.perform()

        assert_false(task.initialized)
        assert_equal(task.line_index, 3)
        with open(file_path) as f:
            a = f.readlines()
            assert_equal(a, [
                'test\n', '# test\n', 'toto\ttata\n', 'a\t2.0\n', 'a\t2.0\n',
                'a\t2.0\n'
            ])

    def test_perform2(self):
        # Test performing in array mode. (Call three times perform)
        task = self.task
        task.saving_target = 'Array'
        task.array_size = '3'
        task.saved_values = [('toto', '{Root_int}'), ('tata', '{Root_float}')]

        task.perform()

        assert_true(task.initialized)
        assert_equal(task.line_index, 1)

        task.perform()

        assert_true(task.initialized)
        assert_equal(task.line_index, 2)

        task.perform()

        assert_false(task.initialized)
        assert_equal(task.line_index, 3)

        array_type = np.dtype([(str(s[0]), 'f8') for s in task.saved_values])
        array = np.empty((3), dtype=array_type)
        array[0] = (1, 2.0)
        array[1] = (1, 2.0)
        array[2] = (1, 2.0)
        np.testing.assert_array_equal(task.array, array)
Beispiel #4
0
class TestSaveFileTask(object):

    test_dir = TEST_PATH + '2'

    @classmethod
    def setup_class(cls):
        print complete_line(
            __name__ + ':{}.setup_class()'.format(cls.__name__), '-', 77)
        os.mkdir(cls.test_dir)

    @classmethod
    def teardown_class(cls):
        print complete_line(
            __name__ + ':{}.teardown_class()'.format(cls.__name__), '-', 77)
        # Removing pref files creating during tests.
        try:
            shutil.rmtree(cls.test_dir)

        # Hack for win32.
        except OSError:
            print 'OSError'
            dirs = os.listdir(cls.test_dir)
            for directory in dirs:
                shutil.rmtree(os.path.join(cls.test_dir), directory)
            shutil.rmtree(cls.test_dir)

    def setup(self):
        self.root = RootTask(should_stop=Event(), should_pause=Event())
        self.task = SaveFileTask(task_name='Test')
        self.root.children_task.append(self.task)

        self.root.write_in_database('int', 1)
        self.root.write_in_database('float', 2.0)
        self.root.write_in_database('array', np.array(range(10)))

    def teardown(self):
        folder = self.test_dir
        for the_file in os.listdir(folder):
            file_path = os.path.join(folder, the_file)
            if os.path.isfile(file_path):
                os.remove(file_path)

    def test_check1(self):
        # Test everything ok in file mode (no array size).
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test{Root_int}.txt'
        task.saved_values = [('toto', '{Root_int}'), ('tata', '{Root_float}')]
        file_path = os.path.join(self.test_dir, 'test1.txt')

        test, traceback = task.check()
        assert_true(test)
        assert_false(traceback)
        assert_false(os.path.isfile(file_path))
        assert_false(task.initialized)

    def test_check4(self):
        # Test check issues in file mode : folder.
        task = self.task
        task.folder = self.test_dir + '{tt}'

        test, traceback = task.check()
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 1)

    def test_check5(self):
        # Test check issues in file mode : file.
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test{tt}.txt'

        test, traceback = task.check()
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 1)

    def test_check9(self):
        # Test check issues in entries.
        task = self.task
        task.folder = self.test_dir
        self.root.write_in_database('int', 3)
        task.filename = 'test{Root_int}.txt'
        task.saved_values = [('toto', '{Root_int*}'),
                             ('tata', '{Root_float*}')]

        test, traceback = task.check()
        print traceback
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 2)

    def test_check10(self):
        # Test warning in case the file already exists in new mode.
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test_e.txt'
        task.header = 'test'
        task.saved_values = [('toto', '{Root_int}'), ('tata', '{Root_float}')]
        file_path = os.path.join(self.test_dir, 'test_e.txt')
        with open(file_path, 'w'):
            pass

        assert_true(os.path.isfile(file_path))
        test, traceback = task.check()
        print traceback
        assert_true(test)
        assert_true(traceback)
        assert_true(os.path.isfile(file_path))

    def test_perform1(self):
        # Test performing with non rec array. (Call twice perform)
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test_perform{Root_int}.txt'
        task.header = 'test'
        task.saved_values = [('toto', '{Root_float}'),
                             ('tata', '{Root_array}')]
        file_path = os.path.join(self.test_dir, 'test_perform1.txt')

        with open(file_path, 'w') as f:
            f.write('test\n')

        try:
            task.perform()

            assert_true(task.initialized)
            assert_true(task.file_object)
            with open(file_path) as f:
                a = f.readlines()

            assert_equal(a[:2], ['# test\n', 'toto\ttata\n'])
            for i in range(10):
                assert_equal(float(a[2 + i].split('\t')[0]), 2.0)
                assert_equal(float(a[2 + i].split('\t')[1]), float(i))

            task.perform()

            assert_true(task.initialized)
            with open(file_path) as f:
                a = f.readlines()
            assert_equal(float(a[12].split('\t')[0]), 2.0)
            assert_equal(float(a[12].split('\t')[1]), 0.0)

            task.perform()
        finally:
            task.file_object.close()

    def test_perform2(self):
        # Test performing with a rec array. (Call twice perform)
        self.root.write_in_database(
            'array', np.rec.fromarrays([range(10), range(10)],
                                       names=['a', 'b']))
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test_perform_rec.txt'
        task.header = 'test'
        task.saved_values = [('toto', '{Root_float}'),
                             ('tata', '{Root_array}')]
        file_path = os.path.join(self.test_dir, 'test_perform_rec.txt')

        with open(file_path, 'w') as f:
            f.write('test\n')

        try:
            task.perform()

            assert_true(task.initialized)
            assert_true(task.file_object)
            with open(file_path) as f:
                a = f.readlines()

            assert_equal(a[:2], ['# test\n', 'toto\ttata_a\ttata_b\n'])
            for i in range(10):
                assert_equal(float(a[2 + i].split('\t')[0]), 2.0)
                assert_equal(float(a[2 + i].split('\t')[1]), float(i))

            task.perform()

            assert_true(task.initialized)
            with open(file_path) as f:
                a = f.readlines()

            assert_equal(float(a[12].split('\t')[0]), 2.0)
            assert_equal(float(a[12].split('\t')[1]), 0.0)

            task.perform()
        finally:
            task.file_object.close()
Beispiel #5
0
class TestSaveTask(object):

    test_dir = TEST_PATH

    @classmethod
    def setup_class(cls):
        print complete_line(__name__ +
                            ':{}.setup_class()'.format(cls.__name__), '-', 77)
        os.mkdir(cls.test_dir)

    @classmethod
    def teardown_class(cls):
        print complete_line(__name__ +
                            ':{}.teardown_class()'.format(cls.__name__), '-',
                            77)
        # Removing pref files creating during tests.
        try:
            shutil.rmtree(cls.test_dir)

        # Hack for win32.
        except OSError:
            print 'OSError'
            dirs = os.listdir(cls.test_dir)
            for directory in dirs:
                shutil.rmtree(os.path.join(cls.test_dir), directory)
            shutil.rmtree(cls.test_dir)

    def setup(self):
        self.root = RootTask(should_stop=Event(), should_pause=Event())
        self.task = SaveTask(task_name='Test')
        self.root.children_task.append(self.task)

        self.root.write_in_database('int', 1)
        self.root.write_in_database('float', 2.0)
        self.root.write_in_database('str', 'a')

    def teardown(self):
        folder = self.test_dir
        for the_file in os.listdir(folder):
            file_path = os.path.join(folder, the_file)
            if os.path.isfile(file_path):
                os.remove(file_path)

    def test_saving_target_observer(self):
        self.task.saving_target = 'Array'

        assert_equal(self.task.get_from_database('Test_array'),
                     np.array([1.0]))

        self.task.saving_target = 'File'

        aux = self.task.accessible_database_entries()
        assert_not_in('Test_array', aux)

        self.task.saving_target = 'File and array'

        assert_equal(self.task.get_from_database('Test_array'),
                     np.array([1.0]))

    def test_check1(self):
        # Test everything ok in file mode (no array size).
        task = self.task
        task.saving_target = 'File'
        task.folder = self.test_dir
        task.filename = 'test{Root_int}.txt'
        task.file_mode = 'New'
        task.header = 'test'
        task.saved_values = [('toto', '{Root_str}'), ('tata', '{Root_float}')]
        file_path = os.path.join(self.test_dir, 'test1.txt')

        test, traceback = task.check()
        assert_true(test)
        assert_false(traceback)
        assert_false(os.path.isfile(file_path))
        assert_false(task.initialized)

        task.file_mode = 'Add'

        test, traceback = task.check()
        assert_true(test)
        assert_false(traceback)
        assert_true(os.path.isfile(file_path))
        os.remove(file_path)

    def test_check2(self):
        # Test everything of in array mode (assert database state).
        task = self.task
        task.saving_target = 'Array'
        task.array_size = '1000*{Root_float}'
        task.saved_values = [('toto', '{Root_str}'), ('tata', '{Root_float}')]

        test, traceback = task.check()
        assert_true(test)
        assert_false(traceback)
        array = task.get_from_database('Test_array')
        assert_equal(array.dtype.names, ('toto', 'tata'))

    def test_check3(self):
        # Test everything is ok in file & array mode.
        task = self.task
        task.saving_target = 'File and array'
        task.folder = self.test_dir
        task.filename = 'test_rr.txt'
        task.file_mode = 'New'
        task.header = 'test'
        task.array_size = '1000*{Root_float}'
        task.saved_values = [('toto', '{Root_str}'), ('tata', '{Root_float}')]
        file_path = os.path.join(self.test_dir, 'test_rr.txt')

        test, traceback = task.check()
        assert_true(test)
        assert_false(traceback)
        assert_false(os.path.isfile(file_path))
        array = task.get_from_database('Test_array')
        assert_equal(array.dtype.names, ('toto', 'tata'))

    def test_check4(self):
        # Test check issues in file mode : folder.
        task = self.task
        task.saving_target = 'File'
        task.folder = self.test_dir + '{tt}'

        test, traceback = task.check()
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 1)

    def test_check5(self):
        # Test check issues in file mode : file.
        task = self.task
        task.saving_target = 'File'
        task.folder = self.test_dir
        task.filename = 'test{tt}.txt'

        test, traceback = task.check()
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 1)

    def test_check6(self):
        # Test check issues in file mode : array_size.
        task = self.task
        task.saving_target = 'File'
        task.folder = self.test_dir + '{tt}'
        task.filename = 'test.txt'
        task.file_mode = 'New'
        task.header = 'test'
        task.array_size = '1000*'
        task.saved_values = [('toto', '{Root_str}'), ('tata', '{Root_float}')]
        file_path = os.path.join(self.test_dir, 'test.txt')

        test, traceback = task.check()
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 1)
        assert_false(os.path.isfile(file_path))

    def test_check7(self):
        # Test check issues in array mode  : wrong array_size.
        task = self.task
        task.saving_target = 'Array'
        task.array_size = '1000*{Root_float}*'
        task.saved_values = [('toto', '{Root_str}'), ('tata', '{Root_float}')]

        test, traceback = task.check()
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 1)
        assert_equal(self.task.get_from_database('Test_array'),
                     np.array([1.0]))

    def test_check8(self):
        # Test check issues in array mode : absent array_size.
        task = self.task
        task.saving_target = 'Array'
        task.saved_values = [('toto', '{Root_str}'), ('tata', '{Root_float}')]

        test, traceback = task.check()
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 1)
        assert_equal(self.task.get_from_database('Test_array'),
                     np.array([1.0]))

    def test_check9(self):
        # Test check issues in entrie.
        task = self.task
        task.saving_target = 'Array'
        task.array_size = '1000*{Root_float}'
        task.saved_values = [('toto', '{Root_str*}'),
                             ('tata', '{Root_float*}')]

        test, traceback = task.check()
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 2)
        array = task.get_from_database('Test_array')
        assert_equal(array.dtype.names, ('toto', 'tata'))

    def test_check10(self):
        # Test warning in case the file already exists in new mode.
        task = self.task
        task.saving_target = 'File'
        task.folder = self.test_dir
        task.filename = 'test_e.txt'
        task.file_mode = 'New'
        task.header = 'test'
        task.saved_values = [('toto', '{Root_str}'), ('tata', '{Root_float}')]
        file_path = os.path.join(self.test_dir, 'test_e.txt')
        with open(file_path, 'w'):
            pass

        assert_true(os.path.isfile(file_path))
        test, traceback = task.check()
        assert_true(test)
        assert_true(traceback)
        assert_true(os.path.isfile(file_path))

    def test_perform1(self):
        # Test performing in mode file. (Call three times perform)
        task = self.task
        task.saving_target = 'File'
        task.folder = self.test_dir
        task.filename = 'test_perform{Root_int}.txt'
        task.file_mode = 'Add'
        task.header = 'test'
        task.array_size = '3'
        task.saved_values = [('toto', '{Root_str}'), ('tata', '{Root_float}')]
        file_path = os.path.join(self.test_dir, 'test_perform1.txt')

        with open(file_path, 'w') as f:
            f.write('test\n')

        task.perform()

        assert_true(task.initialized)
        assert_true(task.file_object)
        assert_equal(task.line_index, 1)
        with open(file_path) as f:
            a = f.readlines()
            assert_equal(a, ['test\n', '# test\n', 'toto\ttata\n', 'a\t2.0\n'])

        task.perform()

        assert_true(task.initialized)
        assert_equal(task.line_index, 2)
        with open(file_path) as f:
            a = f.readlines()
            assert_equal(a, ['test\n', '# test\n', 'toto\ttata\n', 'a\t2.0\n',
                             'a\t2.0\n'])

        task.perform()

        assert_false(task.initialized)
        assert_equal(task.line_index, 3)
        with open(file_path) as f:
            a = f.readlines()
            assert_equal(a, ['test\n', '# test\n', 'toto\ttata\n', 'a\t2.0\n',
                             'a\t2.0\n', 'a\t2.0\n'])

    def test_perform2(self):
        # Test performing in array mode. (Call three times perform)
        task = self.task
        task.saving_target = 'Array'
        task.array_size = '3'
        task.saved_values = [('toto', '{Root_int}'), ('tata', '{Root_float}')]

        task.perform()

        assert_true(task.initialized)
        assert_equal(task.line_index, 1)

        task.perform()

        assert_true(task.initialized)
        assert_equal(task.line_index, 2)

        task.perform()

        assert_false(task.initialized)
        assert_equal(task.line_index, 3)

        array_type = np.dtype([(str(s[0]), 'f8')
                               for s in task.saved_values])
        array = np.empty((3),  dtype=array_type)
        array[0] = (1, 2.0)
        array[1] = (1, 2.0)
        array[2] = (1, 2.0)
        np.testing.assert_array_equal(task.array, array)
Beispiel #6
0
class TestSaveArrayTask(object):

    test_dir = TEST_PATH

    @classmethod
    def setup_class(cls):
        print complete_line(__name__ +
                            ':{}.setup_class()'.format(cls.__name__), '-', 77)
        os.mkdir(cls.test_dir)

    @classmethod
    def teardown_class(cls):
        print complete_line(__name__ +
                            ':{}.teardown_class()'.format(cls.__name__), '-',
                            77)
        # Removing pref files creating during tests.
        try:
            shutil.rmtree(cls.test_dir)

        # Hack for win32.
        except OSError:
            print 'OSError'
            dirs = os.listdir(cls.test_dir)
            for directory in dirs:
                shutil.rmtree(os.path.join(cls.test_dir), directory)
            shutil.rmtree(cls.test_dir)

    def setup(self):
        self.root = RootTask(should_stop=Event(), should_pause=Event())
        self.task = SaveArrayTask(task_name='Test')
        self.root.children_task.append(self.task)

        array = np.empty(2, dtype=np.dtype([('a', 'f8'), ('b', 'f8')]))
        array[0] = (0, 1)
        array[1] = (2, 3)
        self.root.write_in_database('array', array)
        self.root.write_in_database('float', 2.0)
        self.root.write_in_database('str', 'a')

    def teardown(self):
        folder = self.test_dir
        for the_file in os.listdir(folder):
            file_path = os.path.join(folder, the_file)
            if os.path.isfile(file_path):
                os.remove(file_path)

    def test_check1(self):
        # Check everything ok in Text mode.
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test_perform{Root_str}.txt'
        task.mode = 'Text file'
        task.header = 'teststs'
        task.target_array = '{Root_array}'

        test, traceback = task.check()

        assert_true(test)
        assert_false(traceback)
        assert_false(os.path.isfile(os.path.join(self.test_dir,
                                                 'test_performa.txt')))

    def test_check2(self):
        # Check everything ok in Binary mode (wrong file extension, and header)
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test_perform{Root_str}.txt'
        task.mode = 'Binary file'
        task.header = 'teststs'
        task.target_array = '{Root_array}'

        test, traceback = task.check()

        assert_true(test)
        assert_equal(len(traceback), 2)
        assert_in('root/Test-header', traceback)
        assert_in('root/Test-file_ext', traceback)
        assert_false(os.path.isfile(os.path.join(self.test_dir,
                                                 'test_performa.npy')))

    def test_check3(self):
        # Check handling a wrong folder.
        task = self.task
        task.folder = self.test_dir + '{eee}'

        test, traceback = task.check()

        assert_false(test)
        assert_equal(len(traceback), 1)

    def test_check4(self):
        # Check handling a wrong filename.
        task = self.task
        task.folder = self.test_dir
        task.filename = '{rr}'

        test, traceback = task.check()

        assert_false(test)
        assert_equal(len(traceback), 1)

    def test_check5(self):
        # Check handling a wrong database address.
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test_perform{Root_str}.txt'
        task.mode = 'Text file'
        task.header = 'teststs'
        task.target_array = '**{Root_array}'

        test, traceback = task.check()

        assert_false(test)
        assert_equal(len(traceback), 1)

    def test_perform1(self):
        # Test performing in text mode.
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test_perform{Root_str}.txt'
        task.mode = 'Text file'
        task.header = 'tests'
        task.target_array = '{Root_array}'

        task.perform()

        path = os.path.join(self.test_dir, 'test_performa.txt')
        assert_true(os.path.isfile(path))
        with open(path) as f:
            lines = f.readlines()
            assert_equal(lines[0:2], ['# tests\n', 'a\tb\n'])
            assert_equal([float(x) for x in lines[2][:-1].split('\t')],
                         [0.0, 1.0])
            assert_equal([float(x) for x in lines[3][:-1].split('\t')],
                         [2.0, 3.0])

    def test_perform2(self):
        # Test performing in binary mode.
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test_perform{Root_str}.npy'
        task.mode = 'Binary file'
        task.target_array = '{Root_array}'

        task.perform()

        path = os.path.join(self.test_dir, 'test_performa.npy')
        assert_true(os.path.isfile(path))
        a = np.load(path)
        np.testing.assert_array_equal(a, task.get_from_database('Root_array'))
class TestTransferPulseSequenceTask(object):

    def setup(self):
        self.root = RootTask(should_stop=Event(), should_pause=Event())
        self.task = TransferPulseSequenceTask(task_name='Test')
        self.root.children_task.append(self.task)
        self.root.run_time['drivers'] = {'AWG5014B': InstrHelper}
        self.root.write_in_database('int', 2)

        self.sequence = RootSequence()
        self.context = AWGContext()
        self.sequence.context = self.context
        self.sequence.external_vars = {'a': None}
        pulse1 = Pulse(def_1='1.0', def_2='{a}', channel='Ch1_M1')
        pulse2 = Pulse(def_1='{a} + 1.0', def_2='4.0', channel='Ch1_M1')
        pulse3 = Pulse(def_1='{2_stop} + 0.5', def_2='10', channel='Ch1_M1')
        self.sequence.items.extend([pulse1, pulse2, pulse3])

        self.task.sequence = self.sequence
        self.task.sequence_vars = {'a': '{Root_int}'}

        interface = AWGTransferInterface(task=self.task)
        self.task.interface = interface

        self.task.selected_driver = 'AWG5014B'
        self.task.selected_profile = 'Test1'

    def test_check_no_sequence(self):
        self.task.sequence = None
        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)

    def test_check_no_interface(self):
        self.task.interface = None
        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 2)

    def test_check_errors_in_vars(self):
        self.task.sequence_vars = {'a': '**'}
        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)

    def test_check_compilation_errors(self):
        self.task.sequence.items[0].def_1 = 'b'
        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)

    def test_check_wrong_context(self):
        self.task.sequence.context = None
        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)

    def test_check_ok(self):
        test, traceback = self.task.check()
        assert_true(test)

    def test_register_preferences_seq_path(self):
        self.task.sequence_path = 'toto'
        self.task.register_preferences()
        assert_in('sequence_path', self.task.task_preferences)
        assert_not_in('sequence', self.task.task_preferences)

    def test_register_preferences_seq(self):
        self.task.register_preferences()
        assert_not_in('sequence_path', self.task.task_preferences)
        assert_in('sequence', self.task.task_preferences)
class TestArrayExtremaTask(object):

    def setup(self):
        self.root = RootTask(should_stop=Event(), should_pause=Event())
        self.task = ArrayExtremaTask(task_name='Test')
        self.root.children_task.append(self.task)
        array = np.zeros((5,), dtype=[('var1', 'f8'), ('var2', 'f8')])
        array['var1'][1] = -1
        array['var1'][3] = 1
        self.root.write_in_database('array', array)

    def test_mode_observation(self):
        # Check database is correctly updated when the mode change.
        self.task.mode = 'Min'

        assert_equal(self.task.get_from_database('Test_min_ind'), 0)
        assert_equal(self.task.get_from_database('Test_min_value'), 1.0)
        aux = self.task.accessible_database_entries()
        assert_not_in('Test_max_ind', aux)
        assert_not_in('Test_max_value', aux)

        self.task.mode = 'Max'

        assert_equal(self.task.get_from_database('Test_max_ind'), 0)
        assert_equal(self.task.get_from_database('Test_max_value'), 2.0)
        aux = self.task.accessible_database_entries()
        assert_not_in('Test_min_ind', aux)
        assert_not_in('Test_min_value', aux)

        self.task.mode = 'Max & min'

        assert_equal(self.task.get_from_database('Test_min_ind'), 0)
        assert_equal(self.task.get_from_database('Test_min_value'), 1.0)
        assert_equal(self.task.get_from_database('Test_max_ind'), 0)
        assert_equal(self.task.get_from_database('Test_max_value'), 2.0)

    def test_check1(self):
        # Simply test that everything is ok if the array exists in the database
        self.root.write_in_database('array', np.zeros((5,)))
        self.task.target_array = '{Root_array}'

        test, traceback = self.task.check()
        assert_true(test)
        assert_false(traceback)

    def test_check2(self):
        # Simply test that everything is ok if the array exists in the database
        # and the column name is ok.
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var1'

        test, traceback = self.task.check()
        assert_true(test)
        assert_false(traceback)

    def test_check3(self):
        # Test handling a wrong array name.
        self.task.target_array = '*{Root_array}'
        self.task.column_name = 'var3'

        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test', traceback)

    def test_check4(self):
        # Test handling an array without names when a name is given.
        self.root.write_in_database('array', np.zeros((5,)))
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var1'

        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test', traceback)

    def test_check5(self):
        # Test handling an array with names when no name is given.
        self.task.target_array = '{Root_array}'

        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test', traceback)

    def test_check6(self):
        # Test handling a wrong column name.
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var3'

        test, traceback = self.task.check()
        assert_true(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test', traceback)

    def test_check7(self):
        # Test handling a 2d array without names.
        self.task.target_array = '{Root_array}'

        array = np.zeros((5, 5))
        self.root.write_in_database('array', array)

        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test', traceback)

    def test_perform1(self):
        # Test performing when mode is 'Max'.
        self.task.mode = 'Max'
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var1'
        self.root.task_database.prepare_for_running()

        self.task.perform()

        assert_equal(self.task.get_from_database('Test_max_ind'), 3)
        assert_equal(self.task.get_from_database('Test_max_value'), 1.0)

    def test_perform2(self):
        # Test performing when mode is 'Min'.
        self.task.mode = 'Min'
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var1'
        self.root.task_database.prepare_for_running()

        self.task.perform()

        assert_equal(self.task.get_from_database('Test_min_ind'), 1)
        assert_equal(self.task.get_from_database('Test_min_value'), -1.0)

    def test_perform3(self):
        # Test performing when mode is 'Max & min'.
        self.task.mode = 'Max & min'
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var1'
        self.root.task_database.prepare_for_running()

        self.task.perform()

        assert_equal(self.task.get_from_database('Test_max_ind'), 3)
        assert_equal(self.task.get_from_database('Test_max_value'), 1.0)
        assert_equal(self.task.get_from_database('Test_min_ind'), 1)
        assert_equal(self.task.get_from_database('Test_min_value'), -1.0)

    def test_perform4(self):
        # Test performing when no column name is given.
        self.root.write_in_database('array', np.zeros((5,)))
        self.task.mode = 'Max'
        self.task.target_array = '{Root_array}'
        self.root.task_database.prepare_for_running()

        self.task.perform()

        assert_equal(self.task.get_from_database('Test_max_ind'), 0)
        assert_equal(self.task.get_from_database('Test_max_value'), 0.0)
class TestArrayFindValueTask(object):

    def setup(self):
        self.root = RootTask(should_stop=Event(), should_pause=Event())
        self.task = ArrayFindValueTask(task_name='Test')
        self.root.children_task.append(self.task)
        array = np.zeros((5,), dtype=[('var1', 'f8'), ('var2', 'f8')])
        array['var1'][1] = -1.5
        array['var1'][3] = 1.6359
        array['var1'][4] = 1.6359
        self.root.write_in_database('array', array)

    def test_check1(self):
        # Simply test that everything is ok if the array exists in the database
        # and value can be evaluated.
        self.root.write_in_database('array', np.zeros((5,)))
        self.task.target_array = '{Root_array}'
        self.task.value = '1.6359'

        test, traceback = self.task.check()
        assert_true(test)
        assert_false(traceback)

    def test_check2(self):
        # Simply test that everything is ok if the array exists in the database
        # the column name is ok, and value can be evaluated.
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var1'
        self.task.value = '1.6359'

        test, traceback = self.task.check()
        assert_true(test)
        assert_false(traceback)

    def test_check3(self):
        # Test handling a wrong array name.
        self.task.target_array = '*{Root_array}'
        self.task.column_name = 'var3'
        self.task.value = '1.6359'

        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test-array', traceback)

    def test_check4(self):
        # Test handling an array without names when a name is given.
        self.root.write_in_database('array', np.zeros((5,)))
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var1'
        self.task.value = '1.6359'

        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test-column', traceback)

    def test_check5(self):
        # Test handling an array with names when no name is given.
        self.task.target_array = '{Root_array}'
        self.task.value = '1.6359'

        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test-column', traceback)

    def test_check6(self):
        # Test handling a wrong column name.
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var3'
        self.task.value = '1.6359'

        test, traceback = self.task.check()
        assert_true(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test-column', traceback)

    def test_check7(self):
        # Test handling a wrong value.
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var1'
        self.task.value = '*1.6359'

        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test-value', traceback)

    def test_check8(self):
        # Test handling a 2d array value.
        self.task.target_array = '{Root_array}'
        self.task.value = '1.6359'

        array = np.zeros((5, 5))
        self.root.write_in_database('array', array)

        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test-dim', traceback)

    def test_perform1(self):
        # Test performing when mode is 'Max'.
        self.task.value = '1.6359'
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var1'
        self.root.task_database.prepare_for_running()

        self.task.perform()

        assert_equal(self.task.get_from_database('Test_index'), 3)
Beispiel #10
0
class TestArrayExtremaTask(object):
    def setup(self):
        self.root = RootTask(should_stop=Event(), should_pause=Event())
        self.task = ArrayExtremaTask(task_name='Test')
        self.root.children_task.append(self.task)
        array = np.zeros((5, ), dtype=[('var1', 'f8'), ('var2', 'f8')])
        array['var1'][1] = -1
        array['var1'][3] = 1
        self.root.write_in_database('array', array)

    def test_mode_observation(self):
        # Check database is correctly updated when the mode change.
        self.task.mode = 'Min'

        assert_equal(self.task.get_from_database('Test_min_ind'), 0)
        assert_equal(self.task.get_from_database('Test_min_value'), 1.0)
        aux = self.task.accessible_database_entries()
        assert_not_in('Test_max_ind', aux)
        assert_not_in('Test_max_value', aux)

        self.task.mode = 'Max'

        assert_equal(self.task.get_from_database('Test_max_ind'), 0)
        assert_equal(self.task.get_from_database('Test_max_value'), 2.0)
        aux = self.task.accessible_database_entries()
        assert_not_in('Test_min_ind', aux)
        assert_not_in('Test_min_value', aux)

        self.task.mode = 'Max & min'

        assert_equal(self.task.get_from_database('Test_min_ind'), 0)
        assert_equal(self.task.get_from_database('Test_min_value'), 1.0)
        assert_equal(self.task.get_from_database('Test_max_ind'), 0)
        assert_equal(self.task.get_from_database('Test_max_value'), 2.0)

    def test_check1(self):
        # Simply test that everything is ok if the array exists in the database
        self.root.write_in_database('array', np.zeros((5, )))
        self.task.target_array = '{Root_array}'

        test, traceback = self.task.check()
        assert_true(test)
        assert_false(traceback)

    def test_check2(self):
        # Simply test that everything is ok if the array exists in the database
        # and the column name is ok.
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var1'

        test, traceback = self.task.check()
        assert_true(test)
        assert_false(traceback)

    def test_check3(self):
        # Test handling a wrong array name.
        self.task.target_array = '*{Root_array}'
        self.task.column_name = 'var3'

        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test', traceback)

    def test_check4(self):
        # Test handling an array without names when a name is given.
        self.root.write_in_database('array', np.zeros((5, )))
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var1'

        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test', traceback)

    def test_check5(self):
        # Test handling an array with names when no name is given.
        self.task.target_array = '{Root_array}'

        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test', traceback)

    def test_check6(self):
        # Test handling a wrong column name.
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var3'

        test, traceback = self.task.check()
        assert_true(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test', traceback)

    def test_check7(self):
        # Test handling a 2d array without names.
        self.task.target_array = '{Root_array}'

        array = np.zeros((5, 5))
        self.root.write_in_database('array', array)

        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test', traceback)

    def test_perform1(self):
        # Test performing when mode is 'Max'.
        self.task.mode = 'Max'
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var1'
        self.root.task_database.prepare_for_running()

        self.task.perform()

        assert_equal(self.task.get_from_database('Test_max_ind'), 3)
        assert_equal(self.task.get_from_database('Test_max_value'), 1.0)

    def test_perform2(self):
        # Test performing when mode is 'Min'.
        self.task.mode = 'Min'
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var1'
        self.root.task_database.prepare_for_running()

        self.task.perform()

        assert_equal(self.task.get_from_database('Test_min_ind'), 1)
        assert_equal(self.task.get_from_database('Test_min_value'), -1.0)

    def test_perform3(self):
        # Test performing when mode is 'Max & min'.
        self.task.mode = 'Max & min'
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var1'
        self.root.task_database.prepare_for_running()

        self.task.perform()

        assert_equal(self.task.get_from_database('Test_max_ind'), 3)
        assert_equal(self.task.get_from_database('Test_max_value'), 1.0)
        assert_equal(self.task.get_from_database('Test_min_ind'), 1)
        assert_equal(self.task.get_from_database('Test_min_value'), -1.0)

    def test_perform4(self):
        # Test performing when no column name is given.
        self.root.write_in_database('array', np.zeros((5, )))
        self.task.mode = 'Max'
        self.task.target_array = '{Root_array}'
        self.root.task_database.prepare_for_running()

        self.task.perform()

        assert_equal(self.task.get_from_database('Test_max_ind'), 0)
        assert_equal(self.task.get_from_database('Test_max_value'), 0.0)
Beispiel #11
0
class TestArrayFindValueTask(object):
    def setup(self):
        self.root = RootTask(should_stop=Event(), should_pause=Event())
        self.task = ArrayFindValueTask(task_name='Test')
        self.root.children_task.append(self.task)
        array = np.zeros((5, ), dtype=[('var1', 'f8'), ('var2', 'f8')])
        array['var1'][1] = -1.5
        array['var1'][3] = 1.6359
        array['var1'][4] = 1.6359
        self.root.write_in_database('array', array)

    def test_check1(self):
        # Simply test that everything is ok if the array exists in the database
        # and value can be evaluated.
        self.root.write_in_database('array', np.zeros((5, )))
        self.task.target_array = '{Root_array}'
        self.task.value = '1.6359'

        test, traceback = self.task.check()
        assert_true(test)
        assert_false(traceback)

    def test_check2(self):
        # Simply test that everything is ok if the array exists in the database
        # the column name is ok, and value can be evaluated.
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var1'
        self.task.value = '1.6359'

        test, traceback = self.task.check()
        assert_true(test)
        assert_false(traceback)

    def test_check3(self):
        # Test handling a wrong array name.
        self.task.target_array = '*{Root_array}'
        self.task.column_name = 'var3'
        self.task.value = '1.6359'

        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test-array', traceback)

    def test_check4(self):
        # Test handling an array without names when a name is given.
        self.root.write_in_database('array', np.zeros((5, )))
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var1'
        self.task.value = '1.6359'

        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test-column', traceback)

    def test_check5(self):
        # Test handling an array with names when no name is given.
        self.task.target_array = '{Root_array}'
        self.task.value = '1.6359'

        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test-column', traceback)

    def test_check6(self):
        # Test handling a wrong column name.
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var3'
        self.task.value = '1.6359'

        test, traceback = self.task.check()
        assert_true(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test-column', traceback)

    def test_check7(self):
        # Test handling a wrong value.
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var1'
        self.task.value = '*1.6359'

        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test-value', traceback)

    def test_check8(self):
        # Test handling a 2d array value.
        self.task.target_array = '{Root_array}'
        self.task.value = '1.6359'

        array = np.zeros((5, 5))
        self.root.write_in_database('array', array)

        test, traceback = self.task.check()
        assert_false(test)
        assert_equal(len(traceback), 1)
        assert_in('root/Test-dim', traceback)

    def test_perform1(self):
        # Test performing when mode is 'Max'.
        self.task.value = '1.6359'
        self.task.target_array = '{Root_array}'
        self.task.column_name = 'var1'
        self.root.task_database.prepare_for_running()

        self.task.perform()

        assert_equal(self.task.get_from_database('Test_index'), 3)
class TestSaveFileTask(object):

    test_dir = TEST_PATH + '2'

    @classmethod
    def setup_class(cls):
        print complete_line(__name__ +
                            ':{}.setup_class()'.format(cls.__name__), '-', 77)
        os.mkdir(cls.test_dir)

    @classmethod
    def teardown_class(cls):
        print complete_line(__name__ +
                            ':{}.teardown_class()'.format(cls.__name__), '-',
                            77)
        # Removing pref files creating during tests.
        try:
            shutil.rmtree(cls.test_dir)

        # Hack for win32.
        except OSError:
            print 'OSError'
            dirs = os.listdir(cls.test_dir)
            for directory in dirs:
                shutil.rmtree(os.path.join(cls.test_dir), directory)
            shutil.rmtree(cls.test_dir)

    def setup(self):
        self.root = RootTask(should_stop=Event(), should_pause=Event())
        self.task = SaveFileTask(task_name='Test')
        self.root.children_task.append(self.task)

        self.root.write_in_database('int', 1)
        self.root.write_in_database('float', 2.0)
        self.root.write_in_database('array', np.array(range(10)))

    def teardown(self):
        folder = self.test_dir
        for the_file in os.listdir(folder):
            file_path = os.path.join(folder, the_file)
            if os.path.isfile(file_path):
                os.remove(file_path)

    def test_check1(self):
        # Test everything ok in file mode (no array size).
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test{Root_int}.txt'
        task.saved_values = [('toto', '{Root_int}'), ('tata', '{Root_float}')]
        file_path = os.path.join(self.test_dir, 'test1.txt')

        test, traceback = task.check()
        assert_true(test)
        assert_false(traceback)
        assert_false(os.path.isfile(file_path))
        assert_false(task.initialized)

    def test_check4(self):
        # Test check issues in file mode : folder.
        task = self.task
        task.folder = self.test_dir + '{tt}'

        test, traceback = task.check()
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 1)

    def test_check5(self):
        # Test check issues in file mode : file.
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test{tt}.txt'

        test, traceback = task.check()
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 1)

    def test_check6(self):
        # Test check issues in file mode : header formatting.
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test.txt'
        task.header = 'test {*}'

        test, traceback = task.check()
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 1)

    def test_check9(self):
        # Test check issues in entries.
        task = self.task
        task.folder = self.test_dir
        self.root.write_in_database('int', 3)
        task.filename = 'test{Root_int}.txt'
        task.saved_values = [('toto', '{Root_int*}'),
                             ('tata', '{Root_float*}')]

        test, traceback = task.check()
        assert_false(test)
        assert_true(traceback)
        assert_equal(len(traceback), 2)

    def test_check10(self):
        # Test warning in case the file already exists in new mode.
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test_e.txt'
        task.header = 'test'
        task.saved_values = [('toto', '{Root_int}'), ('tata', '{Root_float}')]
        file_path = os.path.join(self.test_dir, 'test_e.txt')
        with open(file_path, 'w'):
            pass

        assert_true(os.path.isfile(file_path))
        test, traceback = task.check()
        print traceback
        assert_true(test)
        assert_true(traceback)
        assert_true(os.path.isfile(file_path))

    def test_perform1(self):
        # Test performing with non rec array. (Call twice perform)
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test_perform{Root_int}.txt'
        task.header = 'test {Root_float}'
        task.saved_values = [('toto', '{Root_float}'),
                             ('tata', '{Root_array}')]
        file_path = os.path.join(self.test_dir, 'test_perform1.txt')

        with open(file_path, 'w') as f:
            f.write('test\n')

        try:
            task.perform()

            assert_true(task.initialized)
            assert_true(task.file_object)
            with open(file_path) as f:
                a = f.readlines()

            assert_equal(a[:2], ['# test 2.0\n',
                                 'toto\ttata\n'])
            for i in range(10):
                assert_equal(float(a[2+i].split('\t')[0]), 2.0)
                assert_equal(float(a[2+i].split('\t')[1]), float(i))

            task.perform()

            assert_true(task.initialized)
            with open(file_path) as f:
                a = f.readlines()
            assert_equal(float(a[12].split('\t')[0]), 2.0)
            assert_equal(float(a[12].split('\t')[1]), 0.0)

            task.perform()
        finally:
            task.file_object.close()

    def test_perform2(self):
        # Test performing with a rec array. (Call twice perform)
        self.root.write_in_database('array',
                                    np.rec.fromarrays([range(10), range(10)],
                                                      names=['a', 'b']))
        task = self.task
        task.folder = self.test_dir
        task.filename = 'test_perform_rec.txt'
        task.header = 'test'
        task.saved_values = [('toto', '{Root_float}'),
                             ('tata', '{Root_array}')]
        file_path = os.path.join(self.test_dir, 'test_perform_rec.txt')

        with open(file_path, 'w') as f:
            f.write('test\n')

        try:
            task.perform()

            assert_true(task.initialized)
            assert_true(task.file_object)
            with open(file_path) as f:
                a = f.readlines()

            assert_equal(a[:2], ['# test\n',
                                 'toto\ttata_a\ttata_b\n'])
            for i in range(10):
                assert_equal(float(a[2+i].split('\t')[0]), 2.0)
                assert_equal(float(a[2+i].split('\t')[1]), float(i))

            task.perform()

            assert_true(task.initialized)
            with open(file_path) as f:
                a = f.readlines()

            assert_equal(float(a[12].split('\t')[0]), 2.0)
            assert_equal(float(a[12].split('\t')[1]), 0.0)

            task.perform()
        finally:
            task.file_object.close()