import unittest
import numpy as np
from polymers import physics
from ..test import Parameters
parameters = Parameters()
FJC = physics.single_chain.fjc.FJC
class Base(unittest.TestCase):
def test_init(self):
for _ in range(parameters.number_of_loops):
_ = FJC(
parameters.number_of_links_minimum,
parameters.link_length_reference,
parameters.hinge_mass_reference
)
def test_number_of_links(self):
for _ in range(parameters.number_of_loops):
number_of_links = \
np.random.randint(
parameters.number_of_links_minimum,
high=parameters.number_of_links_maximum
)
self.assertEqual(
number_of_links,
FJC(
number_of_links,
parameters.link_length_reference,
parameters.hinge_mass_reference
).number_of_links
)
def test_link_length(self):
for _ in range(parameters.number_of_loops):
link_length = \
parameters.link_length_reference + \
parameters.link_length_scale*(0.5 - np.random.rand())
self.assertEqual(
link_length,
FJC(
parameters.number_of_links_minimum,
link_length,
parameters.hinge_mass_reference
).link_length
)
def test_hinge_mass(self):
for _ in range(parameters.number_of_loops):
hinge_mass = \
parameters.hinge_mass_reference + \
parameters.hinge_mass_scale*(0.5 - np.random.rand())
self.assertEqual(
hinge_mass,
FJC(
parameters.number_of_links_minimum,
parameters.link_length_reference,
hinge_mass
).hinge_mass
)
def test_all_parameters(self):
for _ in range(parameters.number_of_loops):
number_of_links = \
np.random.randint(
parameters.number_of_links_minimum,
high=parameters.number_of_links_maximum
)
link_length = \
parameters.link_length_reference + \
parameters.link_length_scale*(0.5 - np.random.rand())
hinge_mass = \
parameters.hinge_mass_reference + \
parameters.hinge_mass_scale*(0.5 - np.random.rand())
model = FJC(
number_of_links,
link_length,
hinge_mass
)
self.assertEqual(
number_of_links,
model.number_of_links
)
self.assertEqual(
link_length,
model.link_length
)
self.assertEqual(
hinge_mass,
model.hinge_mass
)