def test_price_from_rate(): """Tests the price generated from the rate.""" pc = Desktop(chassis=ComputerChassis.Tower) hdd = HardDrive(size=476940) hdd.actions_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8)) cpu = Processor(cores=2, speed=3.4) cpu.actions_one.add(BenchmarkProcessor(rate=27136.44)) pc.components |= { hdd, RamModule(size=4096, speed=1600), RamModule(size=2048, speed=1067), cpu } # Add test visual with functionality and appearance range VisualTest(appearance_range=AppearanceRange.A, functionality_range=FunctionalityRange.A, device=pc) _, price = RateComputer.compute(pc) assert price.price == Decimal('78.2001') assert price.retailer.standard.amount == Decimal('34.7502') assert price.platform.standard.amount == Decimal('15.9821') assert price.refurbisher.standard.amount == Decimal('27.4678') assert price.price >= price.retailer.standard.amount + price.platform.standard.amount \ + price.refurbisher.standard.amount assert price.retailer.warranty2.amount == Decimal('46.9103') assert price.platform.warranty2.amount == Decimal('21.5735') assert price.refurbisher.warranty2.amount == Decimal('37.0864') assert price.warranty2 == Decimal('105.57')
def test_main(): rate = WorkbenchRate( appearance_range=AppearanceRange.A, functionality_range=FunctionalityRange.A ) pc = Desktop() hdd = HardDrive(size=476940) hdd.events_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8)) cpu = Processor(cores=2, speed=3.4) cpu.events_one.add(BenchmarkProcessor(rate=27136.44)) pc.components |= { hdd, RamModule(size=4096, speed=1600), RamModule(size=2048, speed=1067), cpu } rate.device = pc events = main.main(rate, RatingSoftware.ECost, StrictVersion('1.0')) price = next(e for e in events if isinstance(e, EreusePrice)) assert price.price == 92.2 assert price.retailer.standard.amount == 40.97 assert price.platform.standard.amount == 18.84 assert price.refurbisher.standard.amount == 32.38 assert price.price >= price.retailer.standard.amount \ + price.platform.standard.amount \ + price.refurbisher.standard.amount assert price.retailer.warranty2.amount == 55.30 assert price.platform.warranty2.amount == 25.43 assert price.refurbisher.warranty2.amount == 43.72 assert price.warranty2 == 124.45 # Checks relationships workbench_rate = next(e for e in events if isinstance(e, WorkbenchRate)) aggregate_rate = next(e for e in events if isinstance(e, AggregateRate)) assert price.rating == aggregate_rate assert aggregate_rate.ratings[0] == workbench_rate
def test_rate_computer_multiple_ram_module(): """Test rate computer characteristics: - only 1 module ram - processor 2 cores Data get it from R score from DH pc with id = 79 pc_79 = Computer() price = VeryLow hdd_81 = HardDrive(size=76319) hdd_81.actions_one.add(BenchmarkDataStorage(read_speed=72.2, write_speed=24.3)) ram1 = RamModule(size=512, speed=667) ram2 = RamModule(size=512, speed=800) ram3 = RamModule(size=512, speed=667) ram4 = RamModule(size=512, speed=533) cpu = Processor(cores=1, speed=1.6) cpu.actions_one.add(BenchmarkProcessor(rate=3192.34)) pc_79.components.add(hdd_81, ram1, ram2, ram3, ram4, cpu) # add functionality and appearance range rate_pc_79 = WorkbenchRate(appearance_range=AppearanceRange.C, functionality_range=FunctionalityRange.A) # add component rate HDD_rate = 2.61 RAM_rate = 1.99 Processor_rate = 1 Rating = 1.58 """ pc_test = Desktop(chassis=ComputerChassis.Tower) data_storage = HardDrive(size=76319) data_storage.actions_one.add( BenchmarkDataStorage(read_speed=72.2, write_speed=24.3)) cpu = Processor(cores=1, speed=1.6) cpu.actions_one.add(BenchmarkProcessor(rate=3192.34)) pc_test.components |= { data_storage, RamModule(size=512, speed=667), RamModule(size=512, speed=800), RamModule(size=512, speed=667), RamModule(size=512, speed=533), cpu } # Add test visual with functionality and appearance range VisualTest(appearance_range=AppearanceRange.C, functionality_range=FunctionalityRange.A, device=pc_test) # Compute all components rates and general rating rate_pc = RateAlgorithm().compute(pc_test) assert math.isclose(rate_pc.ram, 1.99, rel_tol=0.001) assert math.isclose(rate_pc.data_storage, 2.61, rel_tol=0.001) assert math.isclose(rate_pc.processor, 1, rel_tol=0.001) assert rate_pc.rating == 1.37
def test_rate_ram_rate_2modules(): """Test to check if compute ram rate have same value than previous score version with 2 RamModule. """ ram1 = RamModule(size=4096, speed=1600) ram2 = RamModule(size=2048, speed=1067) ram_rate = RamRate().compute([ram1, ram2]) assert math.isclose(ram_rate, 3.79, rel_tol=0.001), 'RamRate returns incorrect value(rate)'
def test_ram_rate_2modules(): """ Test to check if compute ram rate have same value than previous score version with 2 RamModule; id = pc_1193 """ ram1 = RamModule(size=4096, speed=1600) ram2 = RamModule(size=2048, speed=1067) ram_rate = RamRate().compute([ram1, ram2], WorkbenchRate()) assert round(ram_rate, 2) == 3.79, 'RamRate returns incorrect value(rate)'
def test_rate_ram_rate_4modules(): """Test to check if compute ram rate have same value than previous score version with 2 RamModule. """ ram1 = RamModule(size=512, speed=667) ram2 = RamModule(size=512, speed=800) ram3 = RamModule(size=512, speed=667) ram4 = RamModule(size=512, speed=533) ram_rate = RamRate().compute([ram1, ram2, ram3, ram4]) assert math.isclose(ram_rate, 1.993, rel_tol=0.001), 'RamRate returns incorrect value(rate)'
def test_rate_computer_1193(): """Test rate computer characteristics: - 2 module ram - processor with 2 cores Data get it from R score from DH pc with id = 1193 pc_1193 = Computer() price = 92.2 hdd_1969 = HardDrive(size=476940) hdd_1969.actions_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8)) ram1 = RamModule(size=4096, speed=1600) ram2 = RamModule(size=2048, speed=1067) cpu = Processor(cores=2, speed=3.4) cpu.actions_one.add(BenchmarkProcessor(rate=27136.44)) pc_1193.components.add(hdd_1969, ram1, ram2, cpu) rate_pc_1193 = WorkbenchRate(appearance_range=AppearanceRange.A, functionality_range=FunctionalityRange.A) HDD_rate = 4.02 RAM_rate = 3.79 Processor_rate = 3.95 Rating = 4.61 """ pc_test = Desktop(chassis=ComputerChassis.Tower) data_storage = HardDrive(size=476940) data_storage.actions_one.add( BenchmarkDataStorage(read_speed=126, write_speed=29.8)) cpu = Processor(cores=2, speed=3.4) cpu.actions_one.add(BenchmarkProcessor(rate=27136.44)) pc_test.components |= { data_storage, RamModule(size=4096, speed=1600), RamModule(size=2048, speed=1067), cpu } # Add test visual with functionality and appearance range VisualTest(appearance_range=AppearanceRange.A, functionality_range=FunctionalityRange.A, device=pc_test) # Compute all components rates and general rating rate_pc = RateAlgorithm().compute(pc_test) assert math.isclose(rate_pc.ram, 3.79, rel_tol=0.001) assert math.isclose(rate_pc.data_storage, 4.02, rel_tol=0.001) assert math.isclose(rate_pc.processor, 3.95, rel_tol=0.001) assert math.isclose(rate_pc.rating, 3.91, rel_tol=0.001)
def test_ram_rate_4modules(): """ Test to check if compute ram rate have same value than previous score version with 2 RamModule; id = pc_79 """ ram1 = RamModule(size=512, speed=667) ram2 = RamModule(size=512, speed=800) ram3 = RamModule(size=512, speed=667) ram4 = RamModule(size=512, speed=533) ram_rate = RamRate().compute([ram1, ram2, ram3, ram4], WorkbenchRate()) assert round(ram_rate, 2) == 1.99, 'RamRate returns incorrect value(rate)'
def test_update_components_event_one(): computer = Desktop(serial_number='sn1', model='ml1', manufacturer='mr1', chassis=ComputerChassis.Tower) hdd = HardDrive(serial_number='foo', manufacturer='bar', model='foo-bar') computer.components.add(hdd) # Add event test = models.StressTest(elapsed=timedelta(seconds=1)) computer.events_one.add(test) assert test.device == computer assert next(iter( test.components)) == hdd, 'Event has to have new components' # Remove event computer.events_one.clear() assert not test.device assert not test.components, 'Event has to loose the components' # If we add a component to a device AFTER assigning the event # to the device, the event doesn't get the new component computer.events_one.add(test) ram = RamModule() computer.components.add(ram) assert len(test.components) == 1
def test_rate_ram_speed_is_null(): """Test where RamModule.speed is NULL (not detected) but has size.""" ram0 = RamModule(size=2048, speed=None) ram_rate = RamRate().compute([ram0]) assert math.isclose(ram_rate, 1.85, rel_tol=0.002), 'RamRate returns incorrect value(rate)' ram0 = RamModule(size=1024, speed=None) ram_rate = RamRate().compute([ram0]) assert math.isclose(ram_rate, 1.25, rel_tol=0.004), 'RamRate returns incorrect value(rate)'
def test_no_ram_module(): """ Test without RamModule """ ram0 = RamModule() ram_rate = RamRate().compute([ram0], WorkbenchRate()) assert ram_rate is None
def test_ram_speed_is_null(): """ Test where RamModule.speed is NULL (not detected) but has size. Pc ID = 795(1542), 745(1535), 804(1549) """ ram0 = RamModule(size=2048, speed=None) ram_rate = RamRate().compute([ram0], WorkbenchRate()) assert round(ram_rate, 2) == 1.85, 'RamRate returns incorrect value(rate)' ram0 = RamModule(size=1024, speed=None) ram_rate = RamRate().compute([ram0], WorkbenchRate()) assert round(ram_rate, 2) == 1.25, 'RamRate returns incorrect value(rate)'
def test_rate_ram_speed_is_null(): """ Test where RamModule.speed is NULL (not detected) but has size. Pc ID = 795(1542), 745(1535), 804(1549) """ ram0 = RamModule(size=2048, speed=None) ram_rate = RamRate().compute([ram0], WorkbenchRate()) assert math.isclose(ram_rate, 1.85, rel_tol=0.002), 'RamRate returns incorrect value(rate)' ram0 = RamModule(size=1024, speed=None) ram_rate = RamRate().compute([ram0], WorkbenchRate()) # todo rel_tol >= 0.004 assert math.isclose(ram_rate, 1.25, rel_tol=0.004), 'RamRate returns incorrect value(rate)'
def test_ram_module_size_is_0(): """ Test where input data RamModule.size = 0; is like no RamModule has been detected; id = pc_798 """ ram0 = RamModule(size=0, speed=888) ram_rate = RamRate().compute([ram0], WorkbenchRate()) assert ram_rate is None
def test_rate(): """Test generating an AggregateRate for a given PC / components / WorkbenchRate ensuring results and relationships between pc - rate - workbenchRate - price. """ rate = WorkbenchRate(appearance_range=AppearanceRange.A, functionality_range=FunctionalityRange.A) pc = Desktop(chassis=ComputerChassis.Tower) hdd = HardDrive(size=476940) hdd.events_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8)) cpu = Processor(cores=2, speed=3.4) cpu.events_one.add(BenchmarkProcessor(rate=27136.44)) pc.components |= { hdd, RamModule(size=4096, speed=1600), RamModule(size=2048, speed=1067), cpu } rate.device = pc events = main.main(rate, RatingSoftware.ECost, StrictVersion('1.0')) price = next(e for e in events if isinstance(e, EreusePrice)) assert price.price == Decimal('92.2001') assert price.retailer.standard.amount == Decimal('40.9714') assert price.platform.standard.amount == Decimal('18.8434') assert price.refurbisher.standard.amount == Decimal('32.3853') assert price.price >= price.retailer.standard.amount \ + price.platform.standard.amount \ + price.refurbisher.standard.amount assert price.retailer.warranty2.amount == Decimal('55.3085') assert price.platform.warranty2.amount == Decimal('25.4357') assert price.refurbisher.warranty2.amount == Decimal('43.7259') assert price.warranty2 == Decimal('124.47') # Checks relationships workbench_rate = next(e for e in events if isinstance(e, WorkbenchRate)) aggregate_rate = next(e for e in events if isinstance(e, AggregateRate)) assert price.rating == aggregate_rate assert aggregate_rate.workbench == workbench_rate assert aggregate_rate.rating == workbench_rate.rating == 4.61 assert aggregate_rate.software == workbench_rate.software == RatingSoftware.ECost assert aggregate_rate.version == StrictVersion('1.0') assert aggregate_rate.appearance == workbench_rate.appearance assert aggregate_rate.functionality == workbench_rate.functionality assert aggregate_rate.rating_range == workbench_rate.rating_range assert cpu.rate == pc.rate == hdd.rate == aggregate_rate assert cpu.price == pc.price == aggregate_rate.price == hdd.price == price
def test_ram_rate(): """ Test to check if compute ram rate have same value than previous score version only with 1 RamModule; id = pc_1201 """ ram1 = RamModule(size=2048, speed=1333) ram_rate = RamRate().compute([ram1], WorkbenchRate()) assert round(ram_rate, 2) == 2.02, 'RamRate returns incorrect value(rate)'
def test_rate_ram_rate(): """Test to check if compute ram rate have same value than previous score version only with 1 RamModule. """ ram1 = RamModule(size=2048, speed=1333) ram_rate = RamRate().compute([ram1]) assert math.isclose(ram_rate, 2.02, rel_tol=0.002), 'RamRate returns incorrect value(rate)'
def test_rate(): """ Test main rate function """ pc = Desktop() hdd = HardDrive(size=476940) hdd.events_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8)) cpu = Processor(cores=2, speed=3.4) cpu.events_one.add(BenchmarkProcessor(rate=27136.44)) pc.components |= { hdd, RamModule(size=4096, speed=1600), RamModule(size=2048, speed=1067), cpu } rate = WorkbenchRate(appearance_range=AppearanceRange.A, software=RatingSoftware.ECost, version=StrictVersion('1.0'), functionality_range=FunctionalityRange.A) rate.algorithm_version = StrictVersion('1.0') main.rate(pc, rate) assert rate.rating == 4.61
def test_rate_computer_one_ram_module(): """Test rate computer characteristics: - only 1 module ram - processor 2 cores Data get it from R score from DH pc with id = 798 pc_798 = Computer() price = 50 hdd_1556 = HardDrive(size=152587) hdd_1556.actions_one.add(BenchmarkDataStorage(read_speed=78.1, write_speed=24.4)) ram0 = RamModule(size=0, speed=None) cpu = Processor(cores=2, speed=2.5) cpu.actions_one.add(BenchmarkProcessor(rate=9974.3)) pc_798.components.add(hdd_1556, ram0, cpu) # add functionality and appearance range rate_pc_798 = WorkbenchRate(appearance_range=AppearanceRange.B, functionality_range=FunctionalityRange.A) # add component rate HDD_rate = 3.7 RAM_rate = 1 Processor_rate = 4.09 Rating = 2.5 """ pc_test = Desktop(chassis=ComputerChassis.Tower) data_storage = HardDrive(size=152587) data_storage.actions_one.add( BenchmarkDataStorage(read_speed=78.1, write_speed=24.4)) cpu = Processor(cores=2, speed=2.5) cpu.actions_one.add(BenchmarkProcessor(rate=9974.3)) pc_test.components |= {data_storage, RamModule(size=0, speed=None), cpu} # Add test visual with functionality and appearance range VisualTest(appearance_range=AppearanceRange.B, functionality_range=FunctionalityRange.A, device=pc_test) # Compute all components rates and general rating rate_pc = RateAlgorithm().compute(pc_test) assert math.isclose(rate_pc.ram, 1, rel_tol=0.001) assert math.isclose(rate_pc.data_storage, 3.7, rel_tol=0.001) assert math.isclose(rate_pc.processor, 4.09, rel_tol=0.001) assert math.isclose(rate_pc.rating, 2.1, rel_tol=0.001)
def test_rate_computer_1201(): """Test rate computer characteristics: - only 1 module ram - processor 2 cores Data get it from R score from DH pc with id = 1201 pc_1201 = Computer() price = 69.6 hdd_3054 = HardDrive(size=476940) hdd_3054.actions_one.add(BenchmarkDataStorage(read_speed=158, write_speed=34.7)) ram1 = RamModule(size=2048, speed=1333) cpu = Processor(cores=2, speed=3.3) cpu.actions_one.add(BenchmarkProcessor(rate=26339.48)) pc_1201.components.add(hdd_3054, ram1, cpu) rate_pc_1201 = WorkbenchRate(appearance_range=AppearanceRange.B, functionality_range=FunctionalityRange.A) HDD_rate = 4.07 RAM_rate = 2.02 Processor_rate = 3.93 Rating = 3.48 """ pc_test = Desktop(chassis=ComputerChassis.Tower) data_storage = HardDrive(size=476940) data_storage.actions_one.add( BenchmarkDataStorage(read_speed=158, write_speed=34.7)) cpu = Processor(cores=2, speed=3.3) cpu.actions_one.add(BenchmarkProcessor(rate=26339.48)) pc_test.components |= {data_storage, RamModule(size=2048, speed=1333), cpu} # Add test visual with functionality and appearance range VisualTest(appearance_range=AppearanceRange.B, functionality_range=FunctionalityRange.A, device=pc_test) # Compute all components rates and general rating rate_pc = RateAlgorithm().compute(pc_test) assert math.isclose(rate_pc.ram, 2.02, rel_tol=0.001) assert math.isclose(rate_pc.data_storage, 4.07, rel_tol=0.001) assert math.isclose(rate_pc.processor, 3.93, rel_tol=0.001) assert math.isclose(rate_pc.rating, 3.08, rel_tol=0.001)
def test_rate_computer_rate(): """ Test rate v1 pc_1193 = Computer() price = 92.2 # add components characteristics of pc with id = 1193 hdd_1969 = HardDrive(size=476940) hdd_1969.events_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8)) ram1 = RamModule(size=4096, speed=1600) ram2 = RamModule(size=2048, speed=1067) cpu = Processor(cores=2, speed=3.4) cpu.events_one.add(BenchmarkProcessor(rate=27136.44)) pc_1193.components.add(hdd_1969, ram1, ram2, cpu) # add functionality and appearance range rate_pc_1193 = WorkbenchRate(appearance_range=AppearanceRange.A, functionality_range=FunctionalityRange.A) # add component rate HDD_rate = 4.02 RAM_rate = 3.79 Processor_rate = 3.95 Rating = 4.61 pc_1201 = Computer() price = 69.6 hdd_3054 = HardDrive(size=476940) hdd_3054.events_one.add(BenchmarkDataStorage(read_speed=158, write_speed=34.7)) ram1 = RamModule(size=2048, speed=1333) cpu = Processor(cores=2, speed=3.3) cpu.events_one.add(BenchmarkProcessor(rate=26339.48)) pc_1201.components.add(hdd_3054, ram1, cpu) # add functionality and appearance range rate_pc_1201 = WorkbenchRate(appearance_range=AppearanceRange.B, functionality_range=FunctionalityRange.A) # add component rate HDD_rate = 4.07 RAM_rate = 2.02 Processor_rate = 3.93 Rating = 3.48 pc_79 = Computer() price = VeryLow hdd_81 = HardDrive(size=76319) hdd_81.events_one.add(BenchmarkDataStorage(read_speed=72.2, write_speed=24.3)) ram1 = RamModule(size=512, speed=667) ram2 = RamModule(size=512, speed=800) ram3 = RamModule(size=512, speed=667) ram4 = RamModule(size=512, speed=533) cpu = Processor(cores=1, speed=1.6) cpu.events_one.add(BenchmarkProcessor(rate=3192.34)) pc_79.components.add(hdd_81, ram1, ram2, ram3, ram4, cpu) # add functionality and appearance range rate_pc_79 = WorkbenchRate(appearance_range=AppearanceRange.C, functionality_range=FunctionalityRange.A) # add component rate HDD_rate = 2.61 RAM_rate = 1.99 Processor_rate = 1 Rating = 1.58 pc_798 = Computer() price = 50 hdd_1556 = HardDrive(size=152587) hdd_1556.events_one.add(BenchmarkDataStorage(read_speed=78.1, write_speed=24.4)) ram0 = RamModule(size=0, speed=None) cpu = Processor(cores=2, speed=2.5) cpu.events_one.add(BenchmarkProcessor(rate=9974.3)) pc_798.components.add(hdd_1556, ram0, cpu) # add functionality and appearance range rate_pc_798 = WorkbenchRate(appearance_range=AppearanceRange.B, functionality_range=FunctionalityRange.A) # add component rate HDD_rate = 3.7 RAM_rate = 1 Processor_rate = 4.09 Rating = 2.5 """ # Create a new Computer with components characteristics of pc with id = 1193 pc_test = Desktop(chassis=ComputerChassis.Tower) data_storage = HardDrive(size=476940) data_storage.events_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8)) cpu = Processor(cores=2, speed=3.4) cpu.events_one.add(BenchmarkProcessor(rate=27136.44)) pc_test.components |= { data_storage, RamModule(size=4096, speed=1600), RamModule(size=2048, speed=1067), cpu } # add functionality and appearance range rate_pc = WorkbenchRate(appearance_range=AppearanceRange.A, functionality_range=FunctionalityRange.A) # Compute all components rates and general rating Rate().compute(pc_test, rate_pc) assert math.isclose(rate_pc.ram, 3.79, rel_tol=0.001) assert math.isclose(rate_pc.data_storage, 4.02, rel_tol=0.001) assert math.isclose(rate_pc.processor, 3.95, rel_tol=0.001) assert math.isclose(rate_pc.rating, 4.61, rel_tol=0.001) # Create a new Computer with components characteristics of pc with id = 1201 pc_test = Desktop(chassis=ComputerChassis.Tower) data_storage = HardDrive(size=476940) data_storage.events_one.add(BenchmarkDataStorage(read_speed=158, write_speed=34.7)) cpu = Processor(cores=2, speed=3.3) cpu.events_one.add(BenchmarkProcessor(rate=26339.48)) pc_test.components |= { data_storage, RamModule(size=2048, speed=1333), cpu } # add functionality and appearance range rate_pc = WorkbenchRate(appearance_range=AppearanceRange.B, functionality_range=FunctionalityRange.A) # Compute all components rates and general rating Rate().compute(pc_test, rate_pc) assert math.isclose(rate_pc.ram, 2.02, rel_tol=0.001) assert math.isclose(rate_pc.data_storage, 4.07, rel_tol=0.001) assert math.isclose(rate_pc.processor, 3.93, rel_tol=0.001) assert math.isclose(rate_pc.rating, 3.48, rel_tol=0.001) # Create a new Computer with components characteristics of pc with id = 79 pc_test = Desktop(chassis=ComputerChassis.Tower) data_storage = HardDrive(size=76319) data_storage.events_one.add(BenchmarkDataStorage(read_speed=72.2, write_speed=24.3)) cpu = Processor(cores=1, speed=1.6) cpu.events_one.add(BenchmarkProcessor(rate=3192.34)) pc_test.components |= { data_storage, RamModule(size=512, speed=667), RamModule(size=512, speed=800), RamModule(size=512, speed=667), RamModule(size=512, speed=533), cpu } # add functionality and appearance range rate_pc = WorkbenchRate(appearance_range=AppearanceRange.C, functionality_range=FunctionalityRange.A) # Compute all components rates and general rating Rate().compute(pc_test, rate_pc) assert math.isclose(rate_pc.ram, 1.99, rel_tol=0.001) assert math.isclose(rate_pc.data_storage, 2.61, rel_tol=0.001) assert math.isclose(rate_pc.processor, 1, rel_tol=0.001) assert math.isclose(rate_pc.rating, 1.58, rel_tol=0.001) # Create a new Computer with components characteristics of pc with id = 798 pc_test = Desktop(chassis=ComputerChassis.Tower) data_storage = HardDrive(size=152587) data_storage.events_one.add(BenchmarkDataStorage(read_speed=78.1, write_speed=24.4)) cpu = Processor(cores=2, speed=2.5) cpu.events_one.add(BenchmarkProcessor(rate=9974.3)) pc_test.components |= { data_storage, RamModule(size=0, speed=None), cpu } # add functionality and appearance range rate_pc = WorkbenchRate(appearance_range=AppearanceRange.B, functionality_range=FunctionalityRange.A) # Compute all components rates and general rating Rate().compute(pc_test, rate_pc) assert math.isclose(rate_pc.ram, 1, rel_tol=0.001) assert math.isclose(rate_pc.data_storage, 3.7, rel_tol=0.001) assert math.isclose(rate_pc.processor, 4.09, rel_tol=0.001) assert math.isclose(rate_pc.rating, 2.5, rel_tol=0.001)
def test_multiple_rates(user: UserClient): """Tests submitting two rates from Workbench, ensuring that the tests / benchmarks... from the first rate do not contaminate the second rate. This ensures that rates only takes all the correct actions and components rates in case device have new tests/benchmarks. """ pc = Desktop(chassis=ComputerChassis.Tower) hdd = HardDrive(size=476940) hdd.actions_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8)) cpu = Processor(cores=2, speed=3.4) cpu.actions_one.add(BenchmarkProcessor(rate=27136.44)) pc.components = { hdd, RamModule(size=4096, speed=1600), RamModule(size=2048, speed=1600), cpu } # Add test visual with functionality and appearance range VisualTest(appearance_range=AppearanceRange.A, functionality_range=FunctionalityRange.A, device=pc) rate1, price1 = RateComputer.compute(pc) # asserts rate1 ... assert rate1.data_storage == 4.02 assert rate1.processor == 3.95 assert rate1.ram == 3.8 assert rate1.appearance is None assert rate1.functionality is None assert rate1.rating == 3.92 assert price1.price == Decimal('78.4001') cpu.actions_one.add(BenchmarkProcessor(rate=16069.44)) ssd = SolidStateDrive(size=476940) ssd.actions_one.add(BenchmarkDataStorage(read_speed=222, write_speed=111)) pc.components |= { ssd, RamModule(size=2048, speed=1067), RamModule(size=2048, speed=1067), } # Add test visual with functionality and appearance range VisualTest(appearance_range=AppearanceRange.B, functionality_range=FunctionalityRange.B, device=pc) rate2, price2 = RateComputer.compute(pc) assert rate2.data_storage == 4.3 assert rate2.processor == 3.78 assert rate2.ram == 3.95 assert rate2.appearance is None assert rate2.functionality is None assert rate2.rating == 3.93 assert price2.price == Decimal('78.6001')
def test_rate_no_ram_module(): """Test without RamModule.""" ram0 = RamModule() ram_rate = RamRate().compute([ram0]) assert ram_rate is None
def test_computer_rate(): """ Test Rate v1 """ # Create a new Computer with components characteristics of pc with id = 1193 pc_test = Desktop() data_storage = HardDrive(size=476940) data_storage.events_one.add(BenchmarkDataStorage(read_speed=126, write_speed=29.8)) cpu = Processor(cores=2, speed=3.4) cpu.events_one.add(BenchmarkProcessor(rate=27136.44)) pc_test.components |= { data_storage, RamModule(size=4096, speed=1600), RamModule(size=2048, speed=1067), cpu } # add functionality and appearance range rate_pc = WorkbenchRate(appearance_range=AppearanceRange.A, functionality_range=FunctionalityRange.A) # Compute all components rates and general rating Rate().compute(pc_test, rate_pc) assert round(rate_pc.ram, 2) == 3.79 assert round(rate_pc.data_storage, 2) == 4.02 assert round(rate_pc.processor, 2) == 3.95 assert round(rate_pc.rating, 2) == 4.61 # Create a new Computer with components characteristics of pc with id = 1201 pc_test = Desktop() data_storage = HardDrive(size=476940) data_storage.events_one.add(BenchmarkDataStorage(read_speed=158, write_speed=34.7)) cpu = Processor(cores=2, speed=3.3) cpu.events_one.add(BenchmarkProcessor(rate=26339.48)) pc_test.components |= { data_storage, RamModule(size=2048, speed=1333), cpu } # add functionality and appearance range rate_pc = WorkbenchRate(appearance_range=AppearanceRange.B, functionality_range=FunctionalityRange.A) # Compute all components rates and general rating Rate().compute(pc_test, rate_pc) assert round(rate_pc.ram, 2) == 2.02 assert round(rate_pc.data_storage, 2) == 4.07 assert round(rate_pc.processor, 2) == 3.93 assert round(rate_pc.rating, 2) == 3.48 # Create a new Computer with components characteristics of pc with id = 79 pc_test = Desktop() data_storage = HardDrive(size=76319) data_storage.events_one.add(BenchmarkDataStorage(read_speed=72.2, write_speed=24.3)) cpu = Processor(cores=1, speed=1.6) cpu.events_one.add(BenchmarkProcessor(rate=3192.34)) pc_test.components |= { data_storage, RamModule(size=512, speed=667), RamModule(size=512, speed=800), RamModule(size=512, speed=667), RamModule(size=512, speed=533), cpu } # add functionality and appearance range rate_pc = WorkbenchRate(appearance_range=AppearanceRange.C, functionality_range=FunctionalityRange.A) # Compute all components rates and general rating Rate().compute(pc_test, rate_pc) assert round(rate_pc.ram, 2) == 1.99 assert round(rate_pc.data_storage, 2) == 2.61 assert round(rate_pc.processor, 2) == 1 assert round(rate_pc.rating, 2) == 1.58 # Create a new Computer with components characteristics of pc with id = 798 pc_test = Desktop() data_storage = HardDrive(size=152587) data_storage.events_one.add(BenchmarkDataStorage(read_speed=78.1, write_speed=24.4)) cpu = Processor(cores=2, speed=2.5) cpu.events_one.add(BenchmarkProcessor(rate=9974.3)) pc_test.components |= { data_storage, RamModule(size=0, speed=None), cpu } # add functionality and appearance range rate_pc = WorkbenchRate(appearance_range=AppearanceRange.B, functionality_range=FunctionalityRange.A) # Compute all components rates and general rating Rate().compute(pc_test, rate_pc) assert round(rate_pc.ram, 2) == 1 assert round(rate_pc.data_storage, 2) == 3.7 assert round(rate_pc.processor, 2) == 4.09 assert round(rate_pc.rating, 2) == 2.5