22 lines
1.1 KiB
Python
22 lines
1.1 KiB
Python
import hashlib
|
|
import json
|
|
from pathlib import Path
|
|
from unittest import TestCase
|
|
import numpy as np
|
|
from station.operator_gripper_mesh import rgi_cad_gl
|
|
|
|
|
|
class GripperCadTest(TestCase):
|
|
def test_tessellation_is_from_supplied_step_and_units_are_metres(self):
|
|
folder=Path(__file__).resolve().parents[1]/'src/station/assets/models/rgi-100-30'
|
|
meta=json.loads((folder/'mesh.json').read_text())
|
|
self.assertEqual(hashlib.sha256((folder/'source.step').read_bytes()).hexdigest(),meta['source_sha256'])
|
|
self.assertEqual(meta['source_units'],'mm');self.assertEqual(meta['units'],'m')
|
|
self.assertFalse(meta['articulated'])
|
|
blob,count,center,radius=rgi_cad_gl()
|
|
vertices=np.frombuffer(blob,np.float32).reshape(-1,6)
|
|
self.assertEqual(count,meta['triangles']*3);self.assertEqual(len(vertices),count)
|
|
self.assertTrue(np.isfinite(vertices).all());self.assertGreater(radius,.01)
|
|
self.assertTrue(np.allclose(np.ptp(vertices[:,:3],axis=0)*1000,meta['dimensions_mm'],atol=.001))
|
|
self.assertLess(np.max(np.abs(vertices[:,:3])),1.)
|