| |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
|
|
| """ |
| Test module for FreeCAD material cards and APIs |
| """ |
|
|
| import unittest |
| import FreeCAD |
| import Materials |
|
|
| import os |
|
|
| parseQuantity = FreeCAD.Units.parseQuantity |
|
|
| class MaterialCreationTestCases(unittest.TestCase): |
| """ |
| Test class for FreeCAD material creation and APIs |
| """ |
|
|
| def setUp(self): |
| """ Setup function to initialize test data """ |
| self.ModelManager = Materials.ModelManager() |
| self.MaterialManager = Materials.MaterialManager() |
| self.uuids = Materials.UUIDs() |
|
|
| def tearDown(self): |
| try: |
| material = self.MaterialManager.getMaterialByPath("Example/Frakenstein.FCMat", "User") |
| os.remove(material.LibraryRoot + "/Example/Frakenstein.FCMat") |
| try: |
| os.rmdir(material.LibraryRoot + "/Example") |
| except OSError: |
| |
| pass |
| except LookupError: |
| pass |
|
|
| def checkNewMaterial(self, material): |
| """ Check the state of a newly created material """ |
| self.assertEqual(len(material.UUID), 36) |
| self.assertEqual(len(material.Name), 0) |
| self.assertEqual(len(material.Author), 0) |
| self.assertEqual(len(material.License), 0) |
| self.assertEqual(len(material.Description), 0) |
| self.assertEqual(len(material.URL), 0) |
| self.assertEqual(len(material.Reference), 0) |
| self.assertEqual(len(material.Parent), 0) |
| self.assertEqual(len(material.Tags), 0) |
|
|
| def getQuantity(self, value): |
| quantity = parseQuantity(value) |
| quantity.Format = { "NumberFormat" : "g", |
| "Precision" : 6 } |
| return quantity |
|
|
| def testCreateMaterial(self): |
| """ Create a material with properties """ |
| material = Materials.Material() |
| self.checkNewMaterial(material) |
|
|
| material.Name = "Frankenstein" |
| material.Author = "Mary Shelley" |
| material.License = "CC-BY-3.0" |
| material.Description = "The sad story of a boy afraid of fire" |
| material.URL = "https://www.example.com" |
| material.Reference = "ISBN 978-1673287882" |
|
|
| |
| self.assertEqual(len(material.UUID), 36) |
| uuid = material.UUID |
|
|
| self.assertEqual(material.Name, "Frankenstein") |
| self.assertEqual(material.Author, "Mary Shelley") |
| self.assertEqual(material.License, "CC-BY-3.0") |
| self.assertEqual(material.Description, "The sad story of a boy afraid of fire") |
| self.assertEqual(material.URL, "https://www.example.com") |
| self.assertEqual(material.Reference, "ISBN 978-1673287882") |
|
|
| self.assertEqual(len(material.PhysicalModels), 0) |
| self.assertEqual(len(material.AppearanceModels), 0) |
|
|
| material.addAppearanceModel(self.uuids.TextureRendering) |
| self.assertEqual(len(material.AppearanceModels), 1) |
| |
| self.assertTrue(material.hasAppearanceModel(self.uuids.BasicRendering)) |
| self.assertTrue(material.hasAppearanceModel(self.uuids.TextureRendering)) |
|
|
| |
| |
| material.setAppearanceValue("DiffuseColor", "(1.0, 1.0, 1.0)") |
| material.setAppearanceValue("SpecularColor", "(0, 0, 0, 1.0)") |
|
|
| self.assertEqual(material.AppearanceProperties["DiffuseColor"], "(1.0, 1.0, 1.0)") |
| self.assertEqual(material.getAppearanceValue("DiffuseColor"), "(1.0, 1.0, 1.0)") |
|
|
| self.assertEqual(material.AppearanceProperties["SpecularColor"], "(0, 0, 0, 1.0)") |
| self.assertEqual(material.getAppearanceValue("SpecularColor"), "(0, 0, 0, 1.0)") |
|
|
| |
| self.assertIsNone(material.getAppearanceValue("AmbientColor")) |
| self.assertIsNone(material.getAppearanceValue("EmissiveColor")) |
| self.assertIsNone(material.getAppearanceValue("Shininess")) |
| self.assertIsNone(material.getAppearanceValue("Transparency")) |
| self.assertIsNone(material.getAppearanceValue("TexturePath")) |
| self.assertIsNone(material.getAppearanceValue("TextureImage")) |
| self.assertIsNone(material.getAppearanceValue("TextureScaling")) |
|
|
| material.addPhysicalModel(self.uuids.Density) |
| self.assertEqual(len(material.PhysicalModels), 1) |
| self.assertTrue(material.hasPhysicalModel(self.uuids.Density)) |
|
|
| |
| with self.assertRaises(ValueError): |
| |
| material.setPhysicalValue("Density", "99.9 kg") |
|
|
| material.setPhysicalValue("Density", "99.9") |
| self.assertEqual(material.getPhysicalValue("Density").Format["NumberFormat"], "g") |
| self.assertEqual(material.getPhysicalValue("Density").UserString, self.getQuantity("99.90 kg/m^3").UserString) |
|
|
| material.setPhysicalValue("Density", "99.9 kg/m^3") |
| self.assertEqual(material.getPhysicalValue("Density").Format["NumberFormat"], "g") |
| self.assertEqual(material.getPhysicalValue("Density").UserString, self.getQuantity("99.90 kg/m^3").UserString) |
|
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| self.MaterialManager.save("User", material, "Example/Frakenstein.FCMat", overwrite=True) |
|
|
| |
| self.assertEqual(len(material.UUID), 36) |
| self.assertEqual(material.UUID, uuid) |
| self.assertIn(uuid, self.MaterialManager.Materials) |
| self.assertIsNotNone(self.MaterialManager.getMaterialByPath("Example/Frakenstein.FCMat", "User")) |
| self.assertIsNotNone(self.MaterialManager.getMaterial(uuid)) |
|
|