| import unittest |
|
|
| import numpy as np |
| import torch |
|
|
| from hikka_forge import ForgeItem, ForgeVector |
| from hikka_forge.api import Forge2Vec |
|
|
|
|
| class PublicApiTests(unittest.TestCase): |
| def test_legacy_field_names_are_normalized(self): |
| item = ForgeItem.from_value({ |
| "en_title": "Frieren", |
| "original_title": "Sousou no Frieren", |
| "alternate_names": ["Frieren at the Funeral"], |
| "en_description": "A fantasy journey.", |
| "type": "anime", |
| }) |
| self.assertEqual(item.title, "Frieren") |
| self.assertEqual(item.native_title, "Sousou no Frieren") |
| self.assertEqual(item.synonyms, ["Frieren at the Funeral"]) |
|
|
| def test_vector_arithmetic_preserves_shape(self): |
| a = ForgeVector(np.ones(256, dtype=np.float32)) |
| b = ForgeVector(np.full(256, 2.0, dtype=np.float32)) |
| result = a - b + 0.5 * b |
| self.assertEqual(result.shape, (256,)) |
| np.testing.assert_allclose(result.numpy(), np.zeros(256), atol=1e-6) |
|
|
| def test_normalized_vector_has_unit_norm(self): |
| vector = ForgeVector(np.arange(1, 257, dtype=np.float32)).normalized() |
| self.assertAlmostEqual(float(np.linalg.norm(vector.numpy())), 1.0, places=6) |
|
|
| def test_tensor_poster_is_resized_and_normalized(self): |
| poster = torch.full((480, 320, 3), 255, dtype=torch.uint8) |
| pixels = Forge2Vec._poster_tensor(poster) |
| self.assertEqual(tuple(pixels.shape), (3, 224, 224)) |
| self.assertTrue(torch.allclose(pixels, torch.ones_like(pixels))) |
|
|
|
|
| if __name__ == "__main__": |
| unittest.main() |
|
|