def config_create_default(self): cfg = SConfig() cfg.set_value('car.suv.QM6.transmission', 'cvt') cfg.set_value('car.sedan.SM6.transmission', 'cvt') cfgfile = self.def_folder + 'vehicle' cfg.store(cfgfile) load_vehicle = self.read_all(cfgfile).strip() self.assertTrue(Expected.default_vehicle == load_vehicle)
def check_upsert(self): db = SSimpleDB(self.db_file, SConfig(self.config_file)) data = { 'SNumber': '0000000000', 'Integer': 1234, 'Date': datetime.datetime.now().date(), } items = { 'data': data } db.upsert('inspection', **items) data = { 'SNumber': '0000000000', 'Alter2': 'Five5', 'DateTime': sa.sql.func.now(), } items = { 'data': data } db.upsert('inspection', **items) for i in range(10): data = { 'SNumber': '%010d' % i, 'Integer': 9 - i, 'Alter1': '%05d' % i, } items = { 'data': data } db.upsert('inspection', **items) del db
def check_query(self): db = SSimpleDB(self.db_file, SConfig(self.config_file)) columns = ['SNumber', 'Integer', 'Float', 'Alter1', 'Alter2'] options = { 'wheres': { 'Alter1': ['00000', '00005'], 'Alter2': 'Five5', }, 'operate': SSimpleDB.OP_AND, 'page': 0, 'size': 4, } data = db.query('inspection', *columns, **options) self.assertTrue(len(data) == 1) data = data[0] self.assertTrue(data[0] == '0000000000') self.assertTrue(data[1] == 9) self.assertTrue(data[2] is None) self.assertTrue(data[3] == '00000') self.assertTrue(data[4] == 'Five5') columns = [] options = { 'wheres': { 'Alter1': ['00000', '00005'], 'Alter2': 'Five5', }, 'operate': SSimpleDB.OP_OR, 'page': 0, 'size': 4, } data = db.query('inspection', *columns, **options) self.assertTrue(len(data) == 2) for item in data: self.assertTrue(item[0] in ['0000000000', '0000000005'])
def check_rename_columns(self): DBCONFIG = ''' tables: - name: inspection columns: - [SNumber, String10, NotNull, CollateNocase, Unique, PrimaryKey] - [Pass, String5] - [AString, String20] - [Integer, Integer, NotNull] - [DateTime, DateTime] - [Date, Date] migrate: operation: rename columns: Pass: Alter2 ''' self.to_file(self.config_file, DBCONFIG) db = SSimpleDB(self.db_file, SConfig(self.config_file)) columns = ['SNumber', 'Integer', 'Pass'] options = { 'wheres': { 'Pass': '******', }, 'operate': SSimpleDB.OP_AND, 'page': 0, 'size': 4, } self.assertTrue(db.count('inspection', *columns, **options) == 1) db.vacuum() del db
def check_count(self): db = SSimpleDB(self.db_file, SConfig(self.config_file)) self.assertTrue(db.count('inspection') == 10) columns = [] options = { 'wheres': { 'Alter1': ['00000', '005'], 'Alter2': 'Five5', }, 'operate': SSimpleDB.OP_OR, 'page': 0, 'size': 4, } self.assertTrue(db.count('inspection', *columns, **options) == 2) columns = ['SNumber', 'Integer', 'Float', 'Alter1', 'Alter2'] options = { 'wheres': { 'Alter1': ['00000', '00005'], 'Alter2': 'Five5', }, 'operate': SSimpleDB.OP_AND, 'page': 0, 'size': 4, } self.assertTrue(db.count('inspection', *columns, **options) == 1)
def test_config_vars(self): yml_string = ''' vehicle: sedan: fuel: [disel, gasoline] wheels: 4 suv: fuel: [disel, gasoline] wheels: 4 ''' vehicle_file = '/tmp/test/vehicle.yml' self.to_file(vehicle_file, yml_string) cfg = SConfig(vehicle_file) # self.DEBUG = True testcase = ( (True, cfg, 'Sedan has 4 tires.', 'Sedan has @vehicle.sedan.wheels tires.', ''), (True, cfg, 'Engine is two types - disel,gasoline.', 'Engine is two types - @{vehicle.suv.fuel}.', ''), (True, cfg, 'Engine is two types - @vehicle.suv.fuel.', 'Engine is two types - @vehicle.suv.fuel.', ''), (True, None, 'Engine is two types - @{vehicle.suv.fuel}.', 'Engine is two types - @{vehicle.suv.fuel}.', ''), ) for case in testcase: rv, config, expected, string, keyvalue = case if keyvalue: self._set_environ(keyvalue) assert rv == (expected == SStrExpand.config_vars(config, string))
def config_merge(self): cfg = SConfig(self.def_folder + 'vehicle') cfg.collecting(self.user_folder + 'vehicle') cfg.store() cfgfile = self.user_folder + 'vehicle' load_vehicle = self.read_all(cfgfile).strip() self.assertTrue(Expected.overlay_user_vehicle == load_vehicle)
def config_create_user(self): cfg = SConfig() cfg.set_value('car.suv.QM6.transmission', 'CVT') cfg.set_value('car.suv.QM6.color', 'cloud-perl') cfgfile = self.user_folder + 'vehicle' cfg.store(cfgfile) load_vehicle = self.read_all(cfgfile).strip() self.assertTrue(Expected.user_vehicle == load_vehicle)
def check_create(self): DBCONFIG = ''' tables: - name: inspection columns: - [SNumber, String10, NotNull, CollateNocase, Unique, PrimaryKey] - [Integer, Integer, NotNull] - [Float, Float] - [Bool, Boolean] - [DateTime, DateTime] ''' self.to_file(self.config_file, DBCONFIG) dbconfig = SConfig(self.config_file) db = SSimpleDB(self.db_file, dbconfig) del db
def test_convert(self): yml_string = ''' vehicle: sedan: fuel: [disel, gasoline] wheels: 4 suv: fuel: [disel, gasoline] wheels: 4 link: $ENV_LINK link2: "@link" ''' vehicle_file = '/tmp/test/vehicle.yml' self.to_file(vehicle_file, yml_string) cfg = SConfig(vehicle_file) # self.DEBUG = True testcase = ( (True, cfg, 'Sedan has 4 tires.', 'Sedan has @vehicle.sedan.wheels tires.', ''), (True, cfg, 'Engine is two types - disel,gasoline.', 'Engine is two types - @{vehicle.suv.fuel}.', ''), (True, cfg, 'Engine is two types - @vehicle.suv.fuel.', 'Engine is two types - @vehicle.suv.fuel.', ''), (True, None, 'Engine is two types - @{vehicle.suv.fuel}.', 'Engine is two types - @{vehicle.suv.fuel}.', ''), (True, cfg, 'All vehicle has not 4 tires.', 'All vehicle has not $VEHICLE_TIRES tires.', 'VEHICLE_TIRES=@{vehicle.sedan.wheels}'), (True, cfg, '$ENV_LINK', '$ENV_LINK', 'ENV_LINK=@link'), (True, None, '@link', '$ENV_LINK', 'ENV_LINK=@link'), ) for case in testcase: rv, config, expected, string, keyvalue = case if keyvalue: self._set_environ(keyvalue) result = SStrExpand.convert(string, config=config) assert rv == (expected == result) self._set_environ('ENV_LINK=@link2') try: SStrExpand.convert('@link', config=cfg) assert False except SStrExpand.Error: pass
def test_access_keylist(self): cfgfile = '/tmp/yaml2/config_list.yml' self.to_file(cfgfile, ConfigList.target) cfg = SConfig(cfgfile) self.assertTrue(cfg.get_value('car.sedan[2].name') == 'K7') self.assertTrue(cfg.get_value('car.sedan[1].vendor') == 'Hyundae') self.assertTrue(cfg.get_value('car.sedan[0].name') == 'SM6') self.assertTrue(cfg.get_value('car.sedan[-2].name') == 'K7') self.assertTrue(cfg.get_value('car.sedan[100].name', 'NA') == 'NA') self.assertTrue(cfg.get_value('car.sedan[-1].vendor[1]') == 'BMW') cfg.set_value('car.sedan[-1].name', 'Overseas') self.assertTrue(cfg.get_value('car.sedan[-1].name') == 'Overseas') cfg.set_value('car.sedan[-1].vendor[-1]', 'Benz') self.assertTrue(cfg.get_value('car.sedan[-1].vendor[-1]') == 'Benz') # Append value to list, but it allows only the index is the next number cfg.set_value('car.sedan[-1].vendor[3]', 'Audi') self.assertTrue(cfg.get_value('car.sedan[-1].vendor[-1]') == 'Audi') cfg.set_value('car.suv[0]', 'QM6') cfg.set_value('car.suv[1]', 'Tusan') cfg.set_value('car.suv[2]', 'Tivoli') self.assertTrue(cfg.get_value('car.suv[-1]') == 'Tivoli') cfg.delete('car.suv[1]') self.assertTrue(cfg.get_value('car.suv[1]') == 'Tivoli') cfg.delete('car.sedan[-1].vendor[-1]') self.assertTrue(cfg.get_value('car.sedan[-1].vendor[-1]') == 'Benz') cfg.set_value('car.suv', None) self.assertTrue(cfg.get_value('car.suv') is None) cfg.delete('car.suv') self.assertTrue(cfg.get_value('car.suv', 'Nothing') == 'Nothing') cfg.delete('car.sedan[-1].vendor') result = cfg.get_value('car.sedan[-1].vendor', 'Nothing') self.assertTrue(result == 'Nothing') cfg.store()
def test_config_folder(self): shutil.rmtree(self.def_folder) shutil.rmtree(self.user_folder) self.to_file(self.def_folder + 'vehicle', FolderConfig.root) self.to_file(self.def_folder + '/folder/sedan', FolderConfig.car_sedan) self.to_file(self.def_folder + '/folder/suv', FolderConfig.car_suv) cfg = SConfig(self.def_folder + 'vehicle') # self.DEBUG = True self.dprint('\n' + cfg.dump()) cfg.collecting(self.user_folder + 'vehicle') self.dprint('\n' + cfg.dump()) cfg.store() cfg2 = SConfig(self.user_folder + 'vehicle') self.dprint('\n' + cfg.dump()) self.dprint('\n' + cfg2.dump()) self.assertTrue(cfg.dump() == cfg2.dump()) for fname in ['vehicle', 'folder/sedan', 'folder/suv']: default_load = self.read_all(self.def_folder + fname).strip() user_load = self.read_all(self.user_folder + fname).strip() self.assertTrue(default_load == user_load)