Disabled external gits
This commit is contained in:
116
cs457-gc/assignment_2_1/test/test.py
Normal file
116
cs457-gc/assignment_2_1/test/test.py
Normal file
@@ -0,0 +1,116 @@
|
||||
import time
|
||||
import pytest
|
||||
import json
|
||||
import sys
|
||||
import igl
|
||||
import numpy as np
|
||||
sys.path.append('../')
|
||||
sys.path.append('../src')
|
||||
from elasticsolid import *
|
||||
from eigendecomposition_metric import *
|
||||
eps = 1E-6
|
||||
|
||||
with open('test_data1.json', 'r') as infile:
|
||||
homework_datas = json.load(infile)
|
||||
|
||||
@pytest.mark.timeout(0.5)
|
||||
@pytest.mark.parametrize("data", homework_datas[0])
|
||||
def test_rest_barycenters(data):
|
||||
v, t, rest_barycenters_gt = data
|
||||
es = ElasticSolid(np.array(v), np.array(t))
|
||||
es.make_rest_barycenters()
|
||||
rest_barycenters_student = es.rest_barycenters
|
||||
if(len(v) > 5000):
|
||||
return
|
||||
assert np.linalg.norm(rest_barycenters_gt - rest_barycenters_student) < eps
|
||||
|
||||
@pytest.mark.timeout(0.5)
|
||||
@pytest.mark.parametrize("data", homework_datas[1])
|
||||
def test_rest_shape_matrices(data):
|
||||
v, t, Dm_gt, Bm_gt = data
|
||||
es = ElasticSolid(np.array(v), np.array(t))
|
||||
es.make_rest_shape_matrices()
|
||||
Dm, Bm = es.Dm, es.Bm
|
||||
if(len(v) > 5000):
|
||||
return
|
||||
assert np.linalg.norm(Dm - Dm_gt) < eps
|
||||
assert np.linalg.norm(Bm - Bm_gt) < eps
|
||||
|
||||
@pytest.mark.timeout(0.5)
|
||||
@pytest.mark.parametrize("data", homework_datas[2])
|
||||
def test_def_barycenters(data):
|
||||
v, t, v_def, def_barycenters_gt = data
|
||||
es = ElasticSolid(np.array(v), np.array(t))
|
||||
es.v_def = np.array(v_def)
|
||||
es.make_def_barycenters()
|
||||
def_barycenters_student = es.def_barycenters
|
||||
if(len(v) > 5000):
|
||||
return
|
||||
assert np.linalg.norm(def_barycenters_gt - def_barycenters_student ) < eps
|
||||
|
||||
@pytest.mark.timeout(0.5)
|
||||
@pytest.mark.parametrize("data", homework_datas[3])
|
||||
def test_def_shape_matrices(data):
|
||||
v, t, v_def, Ds_gt = data
|
||||
es = ElasticSolid(np.array(v), np.array(t))
|
||||
es.v_def = np.array(v_def)
|
||||
es.make_def_shape_matrices()
|
||||
Ds = es.Ds
|
||||
if(len(v) > 5000):
|
||||
return
|
||||
assert np.linalg.norm(Ds - Ds_gt) < eps
|
||||
|
||||
@pytest.mark.timeout(0.5)
|
||||
@pytest.mark.parametrize("data", homework_datas[4])
|
||||
def test_update_rest_shape(data):
|
||||
v, t, v_update, rest_barycenters_gt, W0_gt, F_gt = data
|
||||
es = ElasticSolid(np.array(v), np.array(t))
|
||||
es.update_rest_shape(np.array(v_update))
|
||||
if(len(v) > 5000):
|
||||
return
|
||||
assert np.linalg.norm(es.rest_barycenters - rest_barycenters_gt) < eps
|
||||
assert np.linalg.norm(es.W0 - W0_gt) < eps
|
||||
assert np.linalg.norm(es.F - F_gt) < eps
|
||||
|
||||
@pytest.mark.timeout(0.5)
|
||||
@pytest.mark.parametrize("data", homework_datas[5])
|
||||
def test_update_def_shape(data):
|
||||
v, t, v_def, def_barycenters_gt, W_gt, F_gt = data
|
||||
es = ElasticSolid(np.array(v), np.array(t))
|
||||
es.update_def_shape(np.array(v_def))
|
||||
if(len(v) > 5000):
|
||||
return
|
||||
assert np.linalg.norm(es.def_barycenters - def_barycenters_gt) < eps
|
||||
assert np.linalg.norm(es.W - W_gt) < eps
|
||||
assert np.linalg.norm(es.F - F_gt) < eps
|
||||
|
||||
@pytest.mark.timeout(0.5)
|
||||
@pytest.mark.parametrize("data", homework_datas[6])
|
||||
def test_jacobians(data):
|
||||
v, t, v_def, Ds_gt, Bm_gt, F_gt = data
|
||||
es = ElasticSolid(np.array(v), np.array(t))
|
||||
es.v_def, es.Ds, es.Bm = np.array(v_def), np.array(Ds_gt), np.array(Bm_gt)
|
||||
es.make_jacobians()
|
||||
if(len(v) > 5000):
|
||||
return
|
||||
assert np.linalg.norm(es.F - F_gt) < eps
|
||||
|
||||
@pytest.mark.timeout(0.5)
|
||||
@pytest.mark.parametrize("data", homework_datas[7])
|
||||
def test_pinning(data):
|
||||
v, t, pin_idx, free_idx_gt, pin_mask_gt = data
|
||||
es = ElasticSolid(np.array(v), np.array(t), pin_idx = np.array(pin_idx))
|
||||
if(len(v) > 5000):
|
||||
return
|
||||
assert np.linalg.norm(es.free_idx - free_idx_gt) < eps
|
||||
assert np.linalg.norm(es.pin_mask.astype(float) - np.array(pin_mask_gt).astype(float)) < eps
|
||||
|
||||
@pytest.mark.timeout(0.5)
|
||||
@pytest.mark.parametrize("data", homework_datas[8])
|
||||
def test_eig(data):
|
||||
F, eigvals_gt, eigvecs_gt = data
|
||||
eigvals, eigvecs = compute_eigendecomposition_metric(np.array(F))
|
||||
if(len(F) > 5000):
|
||||
return
|
||||
assert np.linalg.norm(eigvals - eigvals_gt) < eps
|
||||
assert np.linalg.norm(abs(np.diagonal(np.einsum('ijk, ijl -> ikl', eigvecs, eigvecs_gt), axis1 = 1, axis2 = 2)) - 1) < eps
|
Reference in New Issue
Block a user