from explainable_rl.foundation.library import *
# Import functions
from explainable_rl.environments.strategic_pricing_suggestion import StrategicPricingSuggestionMDP
from tests.test_environments.test_strategic_pricing import TestStrategicPricing
[docs]class TestStrategicPricingSuggestionMDP(TestStrategicPricing):
"""Test StrategicPricingSuggestionMDP class."""
[docs] def setUp(self) -> None:
"""Set up test objects."""
self.env = StrategicPricingSuggestionMDP(self.dh)
[docs] def tearDown(self) -> None:
"""Tear down test objects."""
del self.env
[docs] def test_get_counts_and_rewards_per_bin(self):
"""Test get_counts_and_rewards_per_bin method."""
binned = np.array([[1, 2, 3, 1], [1, 2, 3, 2], [1, 2, 3, 1], [1, 2, 3, 2]])
self.env._reward_mdp_data = np.array([[1], [2], [1], [2]])
result = self.env._get_counts_and_rewards_per_bin(binned)
target = {"1,2,3,1": [2, 2], "1,2,3,2": [2, 4]}
assert isinstance(result, dict)
assert result == target
[docs] def test_make_rewards_from_data(self):
"""Test make_rewards_from_data method."""
result = self.env._make_rewards_from_data()
assert isinstance(result, sparse.COO)
[docs] def test_step(self):
"""Test step method."""
state = [1, 2, 3]
action = 2
result = self.env.step(state, action)
assert len(result) == 4
assert result == (state, [1, 2, 3], 0.0, True)
[docs] def test_find_next_state(self):
"""Test find_next_state method."""
state = [1, 2, 3]
action = 2
result = self.env._find_next_state(state, action)
assert len(result) == 2
assert result[0] == [1, 2, 3]
assert result[1] == True
[docs] def test_create_average_reward_matrix(self):
"""Test create_average_reward_matrix method."""
counts_rewards = {"1,2,3": [2, 2], "1,2,3": [2, 4]}
result = self.env._create_average_reward_matrix(counts_rewards)
target = np.zeros((10, 10, 10))
target[1, 2, 3] = 1.0
target[1, 2, 3] = 2.0
target = sparse.COO(target)
assert result == target