| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | """ |
| | 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)) |
| |
|