Example #1
0
    def __init__(self, seed: Optional[int] = None) -> None:
        """
        Args:
            seed (int, optional): Seed used to initialize the pseudo-random number generator.
        """

        RandomNode.__init__(self, seed=seed)
Example #2
0
    def __init__(self, power: float = 0., seed: Optional[int] = None) -> None:
        """
        Args:

            power (float, optional):
                Power of the added noise.
        """

        self.power = power
        RandomNode.__init__(self, seed=seed)
    def setUp(self) -> None:

        self.seed = 12345643123
        self.root_node = RandomNode(seed=self.seed)

        self.child_nodes = [RandomNode() for _ in range(10)]

        self.child_nodes[0].random_mother = self.root_node
        self.child_nodes[1].random_mother = self.root_node

        for n in range(2, 10):
            self.child_nodes[n].random_mother = self.child_nodes[n - 2]
    def test_random_root(self) -> None:
        """Random root property should correctly report if the nood is a root."""

        self.assertTrue(self.node.is_random_root)

        self.node.random_mother = RandomNode()
        self.assertFalse(self.node.is_random_root)
    def test_rng(self) -> None:
        """The Random Number Generator property should point to the correct generator."""

        self.assertIs(self.node._RandomNode__generator, self.node._rng)

        mother_node = RandomNode()
        self.node.random_mother = mother_node
        self.assertIs(mother_node._RandomNode__generator, self.node._rng)
class TestRandomNode(TestCase):
    """Test a single Random Node."""
    def setUp(self) -> None:

        self.seed = 1234
        self.node = RandomNode(seed=self.seed)

    def test_rng(self) -> None:
        """The Random Number Generator property should point to the correct generator."""

        self.assertIs(self.node._RandomNode__generator, self.node._rng)

        mother_node = RandomNode()
        self.node.random_mother = mother_node
        self.assertIs(mother_node._RandomNode__generator, self.node._rng)

    def test_random_root(self) -> None:
        """Random root property should correctly report if the nood is a root."""

        self.assertTrue(self.node.is_random_root)

        self.node.random_mother = RandomNode()
        self.assertFalse(self.node.is_random_root)

    def test_set_seed(self) -> None:
        """Setting a seed should result in reproductible random number generation."""

        first_number = self.node._rng.normal()

        self.node.set_seed(self.seed)
        second_number = self.node._rng.normal()

        self.assertEqual(first_number, second_number)

    def test_random_mother_setget(self) -> None:
        """Random mother property getter should return setter argument."""

        self.assertIsNone(self.node.random_mother)

        random_mother = Mock()
        self.node.random_mother = random_mother

        self.assertIs(random_mother, self.node.random_mother)
class TestRandomTree(TestCase):
    """Test random nodes within a tree configuration."""
    def setUp(self) -> None:

        self.seed = 12345643123
        self.root_node = RandomNode(seed=self.seed)

        self.child_nodes = [RandomNode() for _ in range(10)]

        self.child_nodes[0].random_mother = self.root_node
        self.child_nodes[1].random_mother = self.root_node

        for n in range(2, 10):
            self.child_nodes[n].random_mother = self.child_nodes[n - 2]

    def test_set_seed(self) -> None:
        """Setting a seed should result in reproductible random number generation."""

        first_numbers = [child._rng.normal() for child in self.child_nodes]

        self.root_node.set_seed(self.seed)
        second_numbers = [child._rng.normal() for child in self.child_nodes]

        self.assertCountEqual(first_numbers, second_numbers)
    def setUp(self) -> None:

        self.seed = 1234
        self.node = RandomNode(seed=self.seed)