Skip to content

Commit

Permalink
test.model: add AssetInformation tests and improve Entity tests
Browse files Browse the repository at this point in the history
  • Loading branch information
jkhsjdhjs authored and s-heppner committed Nov 14, 2023
1 parent e39f16e commit 73dc4ea
Show file tree
Hide file tree
Showing 2 changed files with 209 additions and 24 deletions.
86 changes: 86 additions & 0 deletions test/model/test_aas.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
# Copyright (c) 2023 the Eclipse BaSyx Authors
#
# This program and the accompanying materials are made available under the terms of the MIT License, available in
# the LICENSE file of this project.
#
# SPDX-License-Identifier: MIT

import unittest

from basyx.aas import model


class AssetInformationTest(unittest.TestCase):
def test_aasd_131_init(self) -> None:
with self.assertRaises(model.AASConstraintViolation) as cm:
model.AssetInformation(model.AssetKind.INSTANCE)
self.assertEqual("An AssetInformation has to have a globalAssetId or a specificAssetId (Constraint AASd-131)",
str(cm.exception))
model.AssetInformation(model.AssetKind.INSTANCE, global_asset_id="https://acplt.org/TestAsset")
model.AssetInformation(model.AssetKind.INSTANCE, specific_asset_id=(model.SpecificAssetId("test", "test"),))
model.AssetInformation(model.AssetKind.INSTANCE, global_asset_id="https://acplt.org/TestAsset",
specific_asset_id=(model.SpecificAssetId("test", "test"),))

def test_aasd_131_set(self) -> None:
asset_information = model.AssetInformation(model.AssetKind.INSTANCE,
global_asset_id="https://acplt.org/TestAsset",
specific_asset_id=(model.SpecificAssetId("test", "test"),))
asset_information.global_asset_id = None
with self.assertRaises(model.AASConstraintViolation) as cm:
asset_information.specific_asset_id = model.ConstrainedList(())
self.assertEqual("An AssetInformation has to have a globalAssetId or a specificAssetId (Constraint AASd-131)",
str(cm.exception))

asset_information = model.AssetInformation(model.AssetKind.INSTANCE,
global_asset_id="https://acplt.org/TestAsset",
specific_asset_id=(model.SpecificAssetId("test", "test"),))
asset_information.specific_asset_id = model.ConstrainedList(())
with self.assertRaises(model.AASConstraintViolation) as cm:
asset_information.global_asset_id = None
self.assertEqual("An AssetInformation has to have a globalAssetId or a specificAssetId (Constraint AASd-131)",
str(cm.exception))

def test_aasd_131_specific_asset_id_add(self) -> None:
asset_information = model.AssetInformation(model.AssetKind.INSTANCE,
global_asset_id="https://acplt.org/TestAsset")
specific_asset_id1 = model.SpecificAssetId("test", "test")
specific_asset_id2 = model.SpecificAssetId("test", "test")
asset_information.specific_asset_id.append(specific_asset_id1)
asset_information.specific_asset_id.extend((specific_asset_id2,))
self.assertIs(asset_information.specific_asset_id[0], specific_asset_id1)
self.assertIs(asset_information.specific_asset_id[1], specific_asset_id2)

def test_aasd_131_specific_asset_id_set(self) -> None:
asset_information = model.AssetInformation(model.AssetKind.INSTANCE,
specific_asset_id=(model.SpecificAssetId("test", "test"),))
with self.assertRaises(model.AASConstraintViolation) as cm:
asset_information.specific_asset_id[:] = ()
self.assertEqual("An AssetInformation has to have a globalAssetId or a specificAssetId (Constraint AASd-131)",
str(cm.exception))
specific_asset_id = model.SpecificAssetId("test", "test")
self.assertIsNot(asset_information.specific_asset_id[0], specific_asset_id)
asset_information.specific_asset_id[:] = (specific_asset_id,)
self.assertIs(asset_information.specific_asset_id[0], specific_asset_id)
asset_information.specific_asset_id[0] = model.SpecificAssetId("test", "test")
self.assertIsNot(asset_information.specific_asset_id[0], specific_asset_id)

def test_aasd_131_specific_asset_id_del(self) -> None:
specific_asset_id = model.SpecificAssetId("test", "test")
asset_information = model.AssetInformation(model.AssetKind.INSTANCE,
specific_asset_id=(model.SpecificAssetId("test1", "test1"),
specific_asset_id))
with self.assertRaises(model.AASConstraintViolation) as cm:
del asset_information.specific_asset_id[:]
self.assertEqual("An AssetInformation has to have a globalAssetId or a specificAssetId (Constraint AASd-131)",
str(cm.exception))
with self.assertRaises(model.AASConstraintViolation) as cm:
asset_information.specific_asset_id.clear()
self.assertEqual("An AssetInformation has to have a globalAssetId or a specificAssetId (Constraint AASd-131)",
str(cm.exception))
self.assertIsNot(asset_information.specific_asset_id[0], specific_asset_id)
del asset_information.specific_asset_id[0]
self.assertIs(asset_information.specific_asset_id[0], specific_asset_id)
with self.assertRaises(model.AASConstraintViolation) as cm:
del asset_information.specific_asset_id[0]
self.assertEqual("An AssetInformation has to have a globalAssetId or a specificAssetId (Constraint AASd-131)",
str(cm.exception))
147 changes: 123 additions & 24 deletions test/model/test_submodel.py
Original file line number Diff line number Diff line change
Expand Up @@ -12,34 +12,133 @@


class EntityTest(unittest.TestCase):
def test_aasd_014_init_self_managed(self) -> None:
with self.assertRaises(model.AASConstraintViolation) as cm:
model.Entity("TestEntity", model.EntityType.SELF_MANAGED_ENTITY)
self.assertEqual("A self-managed entity has to have a globalAssetId or a specificAssetId (Constraint AASd-014)",
str(cm.exception))
model.Entity("TestEntity", model.EntityType.SELF_MANAGED_ENTITY, global_asset_id="https://acplt.org/TestAsset")
model.Entity("TestEntity", model.EntityType.SELF_MANAGED_ENTITY,
specific_asset_id=(model.SpecificAssetId("test", "test"),))
model.Entity("TestEntity", model.EntityType.SELF_MANAGED_ENTITY, global_asset_id="https://acplt.org/TestAsset",
specific_asset_id=(model.SpecificAssetId("test", "test"),))

def test_set_entity(self):
def test_aasd_014_init_co_managed(self) -> None:
model.Entity("TestEntity", model.EntityType.CO_MANAGED_ENTITY)
with self.assertRaises(model.AASConstraintViolation) as cm:
obj = model.Entity(id_short='Test', entity_type=model.EntityType.SELF_MANAGED_ENTITY, statement=())
self.assertIn(
'A self-managed entity has to have a globalAssetId or a specificAssetId',
str(cm.exception)
)
model.Entity("TestEntity", model.EntityType.CO_MANAGED_ENTITY,
global_asset_id="https://acplt.org/TestAsset")
self.assertEqual("A co-managed entity has to have neither a globalAssetId nor a specificAssetId "
"(Constraint AASd-014)", str(cm.exception))
with self.assertRaises(model.AASConstraintViolation) as cm:
obj2 = model.Entity(id_short='Test', entity_type=model.EntityType.CO_MANAGED_ENTITY,
global_asset_id='http://acplt.org/TestAsset/',
statement=())
self.assertIn(
'A co-managed entity has to have neither a globalAssetId nor a specificAssetId',
str(cm.exception)
)
model.Entity("TestEntity", model.EntityType.CO_MANAGED_ENTITY,
specific_asset_id=(model.SpecificAssetId("test", "test"),))
self.assertEqual("A co-managed entity has to have neither a globalAssetId nor a specificAssetId "
"(Constraint AASd-014)", str(cm.exception))
with self.assertRaises(model.AASConstraintViolation) as cm:
model.Entity("TestEntity", model.EntityType.CO_MANAGED_ENTITY,
global_asset_id="https://acplt.org/TestAsset",
specific_asset_id=(model.SpecificAssetId("test", "test"),))
self.assertEqual("A co-managed entity has to have neither a globalAssetId nor a specificAssetId "
"(Constraint AASd-014)", str(cm.exception))

def test_aasd_014_set_self_managed(self) -> None:
entity = model.Entity("TestEntity", model.EntityType.SELF_MANAGED_ENTITY,
global_asset_id="https://acplt.org/TestAsset",
specific_asset_id=(model.SpecificAssetId("test", "test"),))
entity.global_asset_id = None
with self.assertRaises(model.AASConstraintViolation) as cm:
entity.specific_asset_id = model.ConstrainedList(())
self.assertEqual("A self-managed entity has to have a globalAssetId or a specificAssetId (Constraint AASd-014)",
str(cm.exception))

entity = model.Entity("TestEntity", model.EntityType.SELF_MANAGED_ENTITY,
global_asset_id="https://acplt.org/TestAsset",
specific_asset_id=(model.SpecificAssetId("test", "test"),))
entity.specific_asset_id = model.ConstrainedList(())
with self.assertRaises(model.AASConstraintViolation) as cm:
entity.global_asset_id = None
self.assertEqual("A self-managed entity has to have a globalAssetId or a specificAssetId (Constraint AASd-014)",
str(cm.exception))

def test_aasd_014_set_co_managed(self) -> None:
entity = model.Entity("TestEntity", model.EntityType.CO_MANAGED_ENTITY)
with self.assertRaises(model.AASConstraintViolation) as cm:
entity.global_asset_id = "https://acplt.org/TestAsset"
self.assertEqual("A co-managed entity has to have neither a globalAssetId nor a specificAssetId "
"(Constraint AASd-014)", str(cm.exception))
with self.assertRaises(model.AASConstraintViolation) as cm:
entity.specific_asset_id = model.ConstrainedList((model.SpecificAssetId("test", "test"),))
self.assertEqual("A co-managed entity has to have neither a globalAssetId nor a specificAssetId "
"(Constraint AASd-014)", str(cm.exception))

def test_aasd_014_specific_asset_id_add_self_managed(self) -> None:
entity = model.Entity("TestEntity", model.EntityType.SELF_MANAGED_ENTITY,
global_asset_id="https://acplt.org/TestAsset")
specific_asset_id1 = model.SpecificAssetId("test", "test")
specific_asset_id2 = model.SpecificAssetId("test", "test")
entity.specific_asset_id.append(specific_asset_id1)
entity.specific_asset_id.extend((specific_asset_id2,))
self.assertIs(entity.specific_asset_id[0], specific_asset_id1)
self.assertIs(entity.specific_asset_id[1], specific_asset_id2)

def test_aasd_014_specific_asset_id_add_co_managed(self) -> None:
entity = model.Entity("TestEntity", model.EntityType.CO_MANAGED_ENTITY)
with self.assertRaises(model.AASConstraintViolation) as cm:
entity.specific_asset_id.append(model.SpecificAssetId("test", "test"))
self.assertEqual("A co-managed entity has to have neither a globalAssetId nor a specificAssetId "
"(Constraint AASd-014)", str(cm.exception))
with self.assertRaises(model.AASConstraintViolation) as cm:
entity.specific_asset_id.extend((model.SpecificAssetId("test", "test"),))
self.assertEqual("A co-managed entity has to have neither a globalAssetId nor a specificAssetId "
"(Constraint AASd-014)", str(cm.exception))

def test_assd_014_specific_asset_id_set_self_managed(self) -> None:
entity = model.Entity("TestEntity", model.EntityType.SELF_MANAGED_ENTITY,
specific_asset_id=(model.SpecificAssetId("test", "test"),))
with self.assertRaises(model.AASConstraintViolation) as cm:
entity.specific_asset_id[:] = ()
self.assertEqual("A self-managed entity has to have a globalAssetId or a specificAssetId (Constraint AASd-014)",
str(cm.exception))
specific_asset_id = model.SpecificAssetId("test", "test")
self.assertIsNot(entity.specific_asset_id[0], specific_asset_id)
entity.specific_asset_id[:] = (specific_asset_id,)
self.assertIs(entity.specific_asset_id[0], specific_asset_id)
entity.specific_asset_id[0] = model.SpecificAssetId("test", "test")
self.assertIsNot(entity.specific_asset_id[0], specific_asset_id)

def test_assd_014_specific_asset_id_set_co_managed(self) -> None:
entity = model.Entity("TestEntity", model.EntityType.CO_MANAGED_ENTITY)
with self.assertRaises(model.AASConstraintViolation) as cm:
entity.specific_asset_id[:] = (model.SpecificAssetId("test", "test"),)
self.assertEqual("A co-managed entity has to have neither a globalAssetId nor a specificAssetId "
"(Constraint AASd-014)", str(cm.exception))
entity.specific_asset_id[:] = ()

def test_aasd_014_specific_asset_id_del_self_managed(self) -> None:
specific_asset_id = model.SpecificAssetId("test", "test")
entity = model.Entity("TestEntity", model.EntityType.SELF_MANAGED_ENTITY,
specific_asset_id=(model.SpecificAssetId("test", "test"),
specific_asset_id))
with self.assertRaises(model.AASConstraintViolation) as cm:
del entity.specific_asset_id[:]
self.assertEqual("A self-managed entity has to have a globalAssetId or a specificAssetId (Constraint AASd-014)",
str(cm.exception))
with self.assertRaises(model.AASConstraintViolation) as cm:
entity.specific_asset_id.clear()
self.assertEqual("A self-managed entity has to have a globalAssetId or a specificAssetId (Constraint AASd-014)",
str(cm.exception))
self.assertIsNot(entity.specific_asset_id[0], specific_asset_id)
del entity.specific_asset_id[0]
self.assertIs(entity.specific_asset_id[0], specific_asset_id)
with self.assertRaises(model.AASConstraintViolation) as cm:
del entity.specific_asset_id[0]
self.assertEqual("A self-managed entity has to have a globalAssetId or a specificAssetId (Constraint AASd-014)",
str(cm.exception))

specific_asset_id = {model.SpecificAssetId(name="TestKey",
value="TestValue",
external_subject_id=model.ExternalReference((model.Key(
type_=model.KeyTypes.GLOBAL_REFERENCE,
value='http://acplt.org/SpecificAssetId/'),)))}
with self.assertRaises(model.AASConstraintViolation) as cm:
obj3 = model.Entity(id_short='Test', entity_type=model.EntityType.CO_MANAGED_ENTITY,
specific_asset_id=specific_asset_id, statement=())
self.assertIn(
'A co-managed entity has to have neither a globalAssetId nor a specificAssetId',
str(cm.exception))
def test_aasd_014_specific_asset_id_del_co_managed(self) -> None:
entity = model.Entity("TestEntity", model.EntityType.CO_MANAGED_ENTITY)
del entity.specific_asset_id[:]


class PropertyTest(unittest.TestCase):
Expand Down

0 comments on commit 73dc4ea

Please sign in to comment.