import unittest
import numpy as np
from polymers import physics
from ..test import Parameters
parameters = Parameters()
SWFJC = physics.single_chain.swfjc.thermodynamics.isometric.SWFJC
class Base(unittest.TestCase):
def test_init(self):
for _ in range(parameters.number_of_loops):
_ = SWFJC(
parameters.number_of_links_minimum,
parameters.link_length_reference,
parameters.hinge_mass_reference,
parameters.well_width_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,
SWFJC(
number_of_links,
parameters.link_length_reference,
parameters.hinge_mass_reference,
parameters.well_width_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,
SWFJC(
parameters.number_of_links_minimum,
link_length,
parameters.hinge_mass_reference,
parameters.well_width_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,
SWFJC(
parameters.number_of_links_minimum,
parameters.link_length_reference,
hinge_mass,
parameters.well_width_reference
).hinge_mass
)
def test_well_width(self):
for _ in range(parameters.number_of_loops):
well_width = \
parameters.well_width_reference + \
parameters.well_width_scale*(0.5 - np.random.rand())
self.assertEqual(
well_width,
SWFJC(
parameters.number_of_links_minimum,
parameters.link_length_reference,
parameters.hinge_mass_reference,
well_width
).well_width
)
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())
well_width = \
parameters.well_width_reference + \
parameters.well_width_scale*(0.5 - np.random.rand())
model = SWFJC(
number_of_links,
link_length,
hinge_mass,
well_width
)
self.assertEqual(
number_of_links,
model.number_of_links
)
self.assertEqual(
link_length,
model.link_length
)
self.assertEqual(
hinge_mass,
model.hinge_mass
)
self.assertEqual(
well_width,
model.well_width
)