| |
| |
| |
| |
| |
|
|
| import unittest |
|
|
| import numpy as np |
| import torch |
|
|
| from .common_testing import TestCaseMixin |
|
|
|
|
| class TestOpsUtils(TestCaseMixin, unittest.TestCase): |
| def setUp(self) -> None: |
| super().setUp() |
| torch.manual_seed(42) |
| np.random.seed(42) |
|
|
| def test_all_close(self): |
| device = torch.device("cuda:0") |
| n_points = 20 |
| noise_std = 1e-3 |
| msg = "tratata" |
|
|
| |
| x = torch.rand(n_points, 3, device=device) |
| x_noise = x + noise_std * torch.rand(n_points, 3, device=device) |
| assert torch.allclose(x, x_noise, atol=10 * noise_std) |
| assert not torch.allclose(x, x_noise, atol=0.1 * noise_std) |
| self.assertClose(x, x_noise, atol=10 * noise_std) |
| with self.assertRaises(AssertionError) as context: |
| self.assertClose(x, x_noise, atol=0.1 * noise_std, msg=msg) |
| self.assertTrue(msg in str(context.exception)) |
|
|
| |
| def to_np(t): |
| return t.data.cpu().numpy() |
|
|
| self.assertClose(to_np(x), to_np(x_noise), atol=10 * noise_std) |
| with self.assertRaises(AssertionError) as context: |
| self.assertClose(to_np(x), to_np(x_noise), atol=0.1 * noise_std, msg=msg) |
| self.assertIn(msg, str(context.exception)) |
| self.assertIn("Not close", str(context.exception)) |
|
|
| |
| assert torch.allclose(x, x_noise, rtol=100 * noise_std) |
| assert not torch.allclose(x, x_noise, rtol=noise_std) |
| self.assertClose(x, x_noise, rtol=100 * noise_std) |
| with self.assertRaises(AssertionError) as context: |
| self.assertClose(x, x_noise, rtol=noise_std, msg=msg) |
| self.assertTrue(msg in str(context.exception)) |
|
|
| |
| |
| x_noise[:, 0] = x_noise[:, 0] - x[:, 0] |
| x[:, 0] = 0.0 |
| assert not torch.allclose(x, x_noise, rtol=100 * noise_std) |
| self.assertNormsClose( |
| x, x_noise, rtol=100 * noise_std, norm_fn=lambda t: t.norm(dim=-1) |
| ) |
|
|