Skip to content

Commit

Permalink
Break test_defaults in individual test cases per primitive type
Browse files Browse the repository at this point in the history
  • Loading branch information
ncsaba committed Feb 19, 2014
1 parent 772a992 commit deb2323
Showing 1 changed file with 147 additions and 91 deletions.
238 changes: 147 additions & 91 deletions tests/test_wdb.py
Original file line number Diff line number Diff line change
@@ -1,30 +1,18 @@
import os
import unittest
from brlcad.vmath import Vector

from brlcad.vmath import Vector
import brlcad.wdb as wdb
import brlcad.ctypes_adaptors as cta
import functools


class WDBTestCase(unittest.TestCase):

def check_arb(self, brl_db, name, expected_points):
shape = brl_db.lookup_internal(name)
expected = Vector(expected_points)
if not expected.is_same(shape.points):
self.fail("{0} != {1}".format(expected, shape.points))

def check_tgc(self, brl_db, name, expected_points):
shape = brl_db.lookup_internal(name)
expected = Vector(expected_points)
actual = cta.flatten_floats([shape.base, shape.height, shape.a, shape.b, shape.c, shape.d])
if not expected.is_same(actual):
self.fail("{0} != {1}".format(expected, actual))

def test_defaults(self):
"""
Tests default values for primitive creation
"""
@classmethod
def setUpClass(cls):
# create the test DB:
if os.path.isfile("test_defaults.g"):
os.remove("test_defaults.g")
with wdb.WDB("test_defaults.g", "BRL-CAD geometry for testing wdb defaults") as brl_db:
brl_db.sphere("sphere.s")
brl_db.rpp("rpp.s")
Expand All @@ -49,78 +37,146 @@ def test_defaults(self):
brl_db.arbn("arbn.s")
brl_db.particle("particle.s")
brl_db.pipe("pipe.s")
with wdb.WDB("test_defaults.g") as brl_db:
check_arb = functools.partial(self.check_arb, brl_db)
check_arb("rpp.s", "1, -1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1, -1, -1, -1, -1, 1, -1, -1, 1, 1, -1, -1, 1")
check_arb("wedge.s", "0, 0, 0, 1, 0, 0, 1, -1, 0, 0, -1, 0, 0, 0, 1, 0.5, 0, 1, 0.5, -1, 1, 0, -1, 1")
check_arb("arb4.s", "0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1")
check_arb("arb5.s", "1, 1, 0, 1, -1, 0, -1, -1, 0, -1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1")
check_arb("arb6.s", "1, 1, 0, 1, -1, 0, -1, -1, 0, -1, 1, 0, 1, 0, 1, 1, 0, 1, -1, 0, 1, -1, 0, 1")
check_arb("arb7.s", "1, 1, -1, 1, -1, -1, -3, -1, -1, -1, 1, -1, 1, 1, 1, 1, -1, 1, -1, -1, 1, 1, 1, 1")
check_arb("arb8.s", "1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, 1, 1, -1, 1, -1, -1, 1, -1, 1, 1")
shape = brl_db.lookup_internal("arbn.s")
expected = Vector((1, 0, 0, 1, -1, 0, 0, 1, 0, 1, 0, 1, 0, -1, 0, 1, 0, 0, 1, 1, 0, 0, -1, 1))
self.assertTrue(expected.is_same(cta.flatten_floats(shape.planes)))
shape = brl_db.lookup_internal("sphere.s")
self.assertTrue(shape.center.is_same((0, 0, 0)))
self.assertEqual(1, shape.radius)
shape = brl_db.lookup_internal("ellipsoid.s")
self.assertTrue(shape.center.is_same((0, 0, 0)))
self.assertEqual(1, shape.radius)
self.assertTrue(shape.a.is_same((1, 0, 0)))
self.assertTrue(shape.b.is_same((0, 1, 0)))
self.assertTrue(shape.c.is_same((0, 0, 1)))
shape = brl_db.lookup_internal("rpc.s")
self.assertTrue(shape.base.is_same((0, 0, 0)))
self.assertTrue(shape.height.is_same((-1, 0, 0)))
self.assertTrue(shape.breadth.is_same((0, 0, 1)))
self.assertEqual(0.5, shape.half_width)
shape = brl_db.lookup_internal("rhc.s")
self.assertTrue(shape.base.is_same((0, 0, 0)))
self.assertTrue(shape.height.is_same((-1, 0, 0)))
self.assertTrue(shape.breadth.is_same((0, 0, 1)))
self.assertEqual(0.5, shape.half_width)
self.assertEqual(0.1, shape.asymptote)
check_tgc = functools.partial(self.check_tgc, brl_db)
check_tgc("rcc.s", "0, 0, 0, 0, 0, 1, 0, -1, 0, -1, 0, 0, 0, -1, 0, -1, 0, 0")
check_tgc("tgc.s", "0, 0, 0, 0, 0, 1, 0, 1, 0, 0.5, 0, 0, 0, 0.5, 0, 1, 0, 0")
check_tgc("cone.s", "0, 0, 0, 0, 0, 1, 0, -1, 0, 1, 0, 0, 0, -0.5, 0, 0.5, 0, 0")
check_tgc("trc.s", "0, 0, 0, 0, 0, 1, 0, -1, 0, -1, 0, 0, 0, -0.5, 0, -0.5, 0, 0")
shape = brl_db.lookup_internal("torus.s")
self.assertTrue(shape.center.is_same((0, 0, 0)))
self.assertTrue(shape.n.is_same((0, 0, 1)))
self.assertEqual(1, shape.r_revolution)
self.assertEqual(0.2, shape.r_cross)
shape = brl_db.lookup_internal("eto.s")
self.assertTrue(shape.center.is_same((0, 0, 0)))
self.assertTrue(shape.n.is_same((0, 0, 1)))
self.assertTrue(shape.s_major.is_same((0, 0.5, 0.5)))
self.assertEqual(1, shape.r_revolution)
self.assertEqual(0.2, shape.r_minor)
shape = brl_db.lookup_internal("epa.s")
self.assertTrue(shape.base.is_same((0, 0, 0)))
self.assertTrue(shape.height.is_same((0, 0, 1)))
self.assertTrue(shape.n_major.is_same((0, 1, 0)))
self.assertEqual(1, shape.r_major)
self.assertEqual(0.5, shape.r_minor)
shape = brl_db.lookup_internal("ehy.s")
self.assertTrue(shape.base.is_same((0, 0, 0)))
self.assertTrue(shape.height.is_same((0, 0, 1)))
self.assertTrue(shape.n_major.is_same((0, 1, 0)))
self.assertEqual(1, shape.r_major)
self.assertEqual(0.5, shape.r_minor)
self.assertEqual(0.1, shape.asymptote)
shape = brl_db.lookup_internal("hyperboloid.s")
self.assertTrue(shape.base.is_same((0, 0, 0)))
self.assertTrue(shape.height.is_same((0, 0, 1)))
self.assertTrue(shape.a_vec.is_same((0, 1, 0)))
self.assertEqual(0.5, shape.b_mag)
self.assertEqual(0.2, shape.base_neck_ratio)
shape = brl_db.lookup_internal("particle.s")
self.assertTrue(shape.base.is_same((0, 0, 0)))
self.assertTrue(shape.height.is_same((0, 0, 1)))
self.assertEqual(0.5, shape.r_base)
self.assertEqual(0.2, shape.r_end)
# load the DB and cache it in a class variable:
cls.brl_db = wdb.WDB("test_defaults.g")

@classmethod
def tearDownClass(cls):
# close/delete the test DB
cls.brl_db.close()
os.remove("test_defaults.g")

def lookup_shape(self, name):
return self.brl_db.lookup_internal(name)

def check_arb(self, name, expected_points):
shape = self.lookup_shape(name)
expected = Vector(expected_points)
if not expected.is_same(shape.points):
self.fail("{0} != {1}".format(expected, shape.points))

def check_tgc(self, name, expected_points):
shape = self.lookup_shape(name)
expected = Vector(expected_points)
actual = cta.flatten_floats([shape.base, shape.height, shape.a, shape.b, shape.c, shape.d])
if not expected.is_same(actual):
self.fail("{0} != {1}".format(expected, actual))

def test_rpp_defaults(self):
self.check_arb("rpp.s", "1, -1, -1, 1, 1, -1, 1, 1, 1, 1, -1, 1, -1, -1, -1, -1, 1, -1, -1, 1, 1, -1, -1, 1")

def test_wedge_defaults(self):
self.check_arb("wedge.s", "0, 0, 0, 1, 0, 0, 1, -1, 0, 0, -1, 0, 0, 0, 1, 0.5, 0, 1, 0.5, -1, 1, 0, -1, 1")

def test_arb4_defaults(self):
self.check_arb("arb4.s", "0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1")

def test_arb5_defaults(self):
self.check_arb("arb5.s", "1, 1, 0, 1, -1, 0, -1, -1, 0, -1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1")

def test_arb6_defaults(self):
self.check_arb("arb6.s", "1, 1, 0, 1, -1, 0, -1, -1, 0, -1, 1, 0, 1, 0, 1, 1, 0, 1, -1, 0, 1, -1, 0, 1")

def test_arb7_defaults(self):
self.check_arb(
"arb7.s",
"1, 1, -1, 1, -1, -1, -3, -1, -1, -1, 1, -1, 1, 1, 1, 1, -1, 1, -1, -1, 1, 1, 1, 1"
)

def test_arb8_defaults(self):
self.check_arb("arb8.s", "1, 1, -1, 1, -1, -1, -1, -1, -1, -1, 1, -1, 1, 1, 1, 1, -1, 1, -1, -1, 1, -1, 1, 1")

def test_arbn_defaults(self):
shape = self.lookup_shape("arbn.s")
expected = Vector((1, 0, 0, 1, -1, 0, 0, 1, 0, 1, 0, 1, 0, -1, 0, 1, 0, 0, 1, 1, 0, 0, -1, 1))
self.assertTrue(expected.is_same(cta.flatten_floats(shape.planes)))

def test_sphere_defaults(self):
shape = self.lookup_shape("sphere.s")
self.assertTrue(shape.center.is_same((0, 0, 0)))
self.assertEqual(1, shape.radius)

def test_ellipsoid_defaults(self):
shape = self.lookup_shape("ellipsoid.s")
self.assertTrue(shape.center.is_same((0, 0, 0)))
self.assertEqual(1, shape.radius)
self.assertTrue(shape.a.is_same((1, 0, 0)))
self.assertTrue(shape.b.is_same((0, 1, 0)))
self.assertTrue(shape.c.is_same((0, 0, 1)))

def test_rpc_defaults(self):
shape = self.lookup_shape("rpc.s")
self.assertTrue(shape.base.is_same((0, 0, 0)))
self.assertTrue(shape.height.is_same((-1, 0, 0)))
self.assertTrue(shape.breadth.is_same((0, 0, 1)))
self.assertEqual(0.5, shape.half_width)

def test_rhc_defaults(self):
shape = self.lookup_shape("rhc.s")
self.assertTrue(shape.base.is_same((0, 0, 0)))
self.assertTrue(shape.height.is_same((-1, 0, 0)))
self.assertTrue(shape.breadth.is_same((0, 0, 1)))
self.assertEqual(0.5, shape.half_width)
self.assertEqual(0.1, shape.asymptote)

def test_rcc_defaults(self):
self.check_tgc("rcc.s", "0, 0, 0, 0, 0, 1, 0, -1, 0, -1, 0, 0, 0, -1, 0, -1, 0, 0")

def test_tgc_defaults(self):
self.check_tgc("tgc.s", "0, 0, 0, 0, 0, 1, 0, 1, 0, 0.5, 0, 0, 0, 0.5, 0, 1, 0, 0")

def test_cone_defaults(self):
self.check_tgc("cone.s", "0, 0, 0, 0, 0, 1, 0, -1, 0, 1, 0, 0, 0, -0.5, 0, 0.5, 0, 0")

def test_trc_defaults(self):
self.check_tgc("trc.s", "0, 0, 0, 0, 0, 1, 0, -1, 0, -1, 0, 0, 0, -0.5, 0, -0.5, 0, 0")

def test_torus_defaults(self):
shape = self.lookup_shape("torus.s")
self.assertTrue(shape.center.is_same((0, 0, 0)))
self.assertTrue(shape.n.is_same((0, 0, 1)))
self.assertEqual(1, shape.r_revolution)
self.assertEqual(0.2, shape.r_cross)

def test_eto_defaults(self):
shape = self.lookup_shape("eto.s")
self.assertTrue(shape.center.is_same((0, 0, 0)))
self.assertTrue(shape.n.is_same((0, 0, 1)))
self.assertTrue(shape.s_major.is_same((0, 0.5, 0.5)))
self.assertEqual(1, shape.r_revolution)
self.assertEqual(0.2, shape.r_minor)

def test_epa_defaults(self):
shape = self.lookup_shape("epa.s")
self.assertTrue(shape.base.is_same((0, 0, 0)))
self.assertTrue(shape.height.is_same((0, 0, 1)))
self.assertTrue(shape.n_major.is_same((0, 1, 0)))
self.assertEqual(1, shape.r_major)
self.assertEqual(0.5, shape.r_minor)

def test_ehy_defaults(self):
shape = self.lookup_shape("ehy.s")
self.assertTrue(shape.base.is_same((0, 0, 0)))
self.assertTrue(shape.height.is_same((0, 0, 1)))
self.assertTrue(shape.n_major.is_same((0, 1, 0)))
self.assertEqual(1, shape.r_major)
self.assertEqual(0.5, shape.r_minor)
self.assertEqual(0.1, shape.asymptote)

def test_hyperboloid_defaults(self):
shape = self.lookup_shape("hyperboloid.s")
self.assertTrue(shape.base.is_same((0, 0, 0)))
self.assertTrue(shape.height.is_same((0, 0, 1)))
self.assertTrue(shape.a_vec.is_same((0, 1, 0)))
self.assertEqual(0.5, shape.b_mag)
self.assertEqual(0.2, shape.base_neck_ratio)

def test_particle_defaults(self):
shape = self.lookup_shape("particle.s")
self.assertTrue(shape.base.is_same((0, 0, 0)))
self.assertTrue(shape.height.is_same((0, 0, 1)))
self.assertEqual(0.5, shape.r_base)
self.assertEqual(0.2, shape.r_end)


if __name__ == "__main__":
Expand Down

0 comments on commit deb2323

Please sign in to comment.