def test_max_storage():
    storage = ResourceStorage.ResourceStorage("", "energy", 20)
    assert storage.max_amount_stored == -1

    storage_with_max = ResourceStorage.ResourceStorage("",
                                                       "energy",
                                                       20,
                                                       max_storage=200)
    assert storage_with_max.max_amount_stored == 200
def test_giveResourceTwice():
    storage = ResourceStorage.ResourceStorage("", "water", 20)
    storage.giveResource("water", 10)
    storage.giveResource("water", 20)
    assert storage.amount_stored == 50

    assert storage.getResourcesReceivedThisTick() == {"water": 30}
def test_updateReservations(requested, received):
    storage = ResourceStorage.ResourceStorage("", "energy", 20)
    connections = []
    for request in requested:
        connections.append(MagicMock(reserved_requested_amount=request))

    storage.getAllOutgoingConnectionsByType = MagicMock(
        return_value=connections)
    storage.updateReservations()

    for idx, received in enumerate(received):
        assert connections[idx].reserved_available_amount == received
def test_deserialize():
    storage = ResourceStorage.ResourceStorage("", "energy", 20)
    assert storage.amount_stored == 20

    storage.deserialize({
        'node_id': '',
        'resources_received_this_tick': {},
        'resources_produced_this_tick': {},
        'resources_left_over': {},
        'temperature': 293.15,
        'amount_stored': 120
    })
    assert storage.amount_stored == 120
def test_weight_energy():
    storage = ResourceStorage.ResourceStorage("", "energy", 20)
    storage_2 = ResourceStorage.ResourceStorage("", "energy", 500)
    # Energy storage should always be the same weight as eachoter (because energy doesn't have extra weight.
    assert storage.weight == storage_2.weight
def test_serialize():
    storage = ResourceStorage.ResourceStorage("", "energy", 291)
    assert storage.serialize()["amount_stored"] == 291
def test_giveResource(requested, stored, max_storage, resource_type):
    storage = ResourceStorage.ResourceStorage("", "water", 20, max_storage)

    assert storage.giveResource(resource_type, requested) == stored
    assert storage._amount == 20 + stored
def test_preGiveResource(requested, stored, max_storage, resource_type):
    storage = ResourceStorage.ResourceStorage("", "water", 20, max_storage)

    assert storage.preGiveResource(resource_type, requested) == stored
def test_getResource(requested, gained, resource_type):
    storage = ResourceStorage.ResourceStorage("", "water", 20)

    assert storage.getResource(resource_type, requested) == gained
    assert storage._amount == 20 - gained
def test_preGetResource(requested, gained, resource_type):
    storage = ResourceStorage.ResourceStorage("", "water", 20)

    assert storage.preGetResource(resource_type, requested) == gained
def test_weight_water():
    energy_store = ResourceStorage.ResourceStorage("", "energy", 20)
    water_store = ResourceStorage.ResourceStorage("", "water", 20)
    assert water_store.weight > energy_store.weight