diff --git a/SysML2.NET.Tests/Extend/ClassifierExtensionsTestFixture.cs b/SysML2.NET.Tests/Extend/ClassifierExtensionsTestFixture.cs index e77764c6..b2d62527 100644 --- a/SysML2.NET.Tests/Extend/ClassifierExtensionsTestFixture.cs +++ b/SysML2.NET.Tests/Extend/ClassifierExtensionsTestFixture.cs @@ -1,7 +1,7 @@ // ------------------------------------------------------------------------------------------------- // // -// Copyright 2022-2026 Starion Group S.A. +// Copyright (C) 2022-2026 Starion Group S.A. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -21,18 +21,38 @@ namespace SysML2.NET.Tests.Extend { using System; - + using NUnit.Framework; using SysML2.NET.Core.POCO.Core.Classifiers; + using SysML2.NET.Core.POCO.Core.Types; + using SysML2.NET.Extensions; [TestFixture] public class ClassifierExtensionsTestFixture { [Test] - public void ComputeOwnedSubclassification_ThrowsNotSupportedException() + public void VerifyComputeOwnedSubclassification() { - Assert.That(() => ((IClassifier)null).ComputeOwnedSubclassification(), Throws.TypeOf()); + // Null subject: + Assert.That(() => ((IClassifier)null).ComputeOwnedSubclassification(), Throws.TypeOf()); + + // Empty classifier: + var subject = new Classifier(); + Assert.That(subject.ComputeOwnedSubclassification(), Has.Count.EqualTo(0)); + + var superClassifier = new Classifier(); + + var subclassification = new Subclassification + { + Subclassifier = subject, + Superclassifier = superClassifier + }; + + subject.AssignOwnership(subclassification); + + Assert.That(subject.ComputeOwnedSubclassification(), Is.EquivalentTo([subclassification])); + } } } diff --git a/SysML2.NET/Extend/ClassifierExtensions.cs b/SysML2.NET/Extend/ClassifierExtensions.cs index cef3bc35..0ab4c593 100644 --- a/SysML2.NET/Extend/ClassifierExtensions.cs +++ b/SysML2.NET/Extend/ClassifierExtensions.cs @@ -1,20 +1,20 @@ // ------------------------------------------------------------------------------------------------- // -// -// Copyright (C) 2022-2026 Starion Group S.A. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// +// +// Copyright (C) 2022-2026 Starion Group S.A. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// // http://www.apache.org/licenses/LICENSE-2.0 -// +// // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. -// +// // // ------------------------------------------------------------------------------------------------ @@ -22,18 +22,11 @@ namespace SysML2.NET.Core.POCO.Core.Classifiers { using System; using System.Collections.Generic; - - using SysML2.NET.Core.Core.Types; - using SysML2.NET.Core.Root.Namespaces; - using SysML2.NET.Core.POCO.Core.Features; - using SysML2.NET.Core.POCO.Core.Types; - using SysML2.NET.Core.POCO.Root.Annotations; - using SysML2.NET.Core.POCO.Root.Elements; - using SysML2.NET.Core.POCO.Root.Namespaces; + using System.Linq; /// - /// The class provides extensions methods for - /// the interface + /// The class provides extensions methods for + /// the interface /// internal static class ClassifierExtensions { @@ -48,16 +41,16 @@ internal static class ClassifierExtensions /// /// /// - /// The subject + /// The subject /// /// /// the computed result /// - [System.Diagnostics.CodeAnalysis.ExcludeFromCodeCoverage] internal static List ComputeOwnedSubclassification(this IClassifier classifierSubject) { - throw new NotSupportedException("Create a GitHub issue when this method is required"); + return classifierSubject == null + ? throw new ArgumentNullException(nameof(classifierSubject)) + : [..classifierSubject.ownedSpecialization.OfType()]; } - } }