123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243 |
- using System;
- using PixiEditor.Models.DataHolders;
- using PixiEditor.Models.Layers;
- using Xunit;
- namespace PixiEditorTests.ModelsTests.DataHoldersTests
- {
- public class LayerStructureTests
- {
- [Fact]
- public void TestThatAddNewGroupAddsNewGroup()
- {
- Document doc = new Document(1, 1);
- doc.Layers.Add(new("_testLayer"));
- var testLayer = doc.Layers[^1];
- doc.LayerStructure.AddNewGroup("test", testLayer.LayerGuid);
- Assert.Single(doc.LayerStructure.Groups);
- Assert.Equal(testLayer.LayerGuid, doc.LayerStructure.Groups[0].StartLayerGuid);
- Assert.Equal(testLayer.LayerGuid, doc.LayerStructure.Groups[0].EndLayerGuid);
- }
- [Fact]
- public void TestThatAddNewGroupAddsNewGroupAsASubgroup()
- {
- Document doc = new Document(1, 1);
- doc.Layers.Add(new("_testLayer"));
- var testLayer = doc.Layers[^1];
- doc.LayerStructure.AddNewGroup("test", testLayer.LayerGuid);
- doc.LayerStructure.AddNewGroup("test1", testLayer.LayerGuid);
- Assert.Single(doc.LayerStructure.Groups);
- Assert.Single(doc.LayerStructure.Groups[0].Subgroups);
- Assert.Equal(testLayer.LayerGuid, doc.LayerStructure.Groups[0].StartLayerGuid);
- Assert.Equal(testLayer.LayerGuid, doc.LayerStructure.Groups[0].EndLayerGuid);
- Assert.Equal(testLayer.LayerGuid, doc.LayerStructure.Groups[0].Subgroups[0].StartLayerGuid);
- Assert.Equal(testLayer.LayerGuid, doc.LayerStructure.Groups[0].Subgroups[0].EndLayerGuid);
- }
- [Fact]
- public void TestThatMoveGroupMovesSwapsLayerPlacesWithOtherGroup()
- {
- Document doc = new Document(1, 1);
- doc.Layers.Add(new Layer("_testLayer"));
- doc.Layers.Add(new Layer("_testLayer1"));
- var testLayer = doc.Layers[0];
- var testLayer1 = doc.Layers[^1];
- doc.LayerStructure.AddNewGroup("test", testLayer.LayerGuid);
- doc.LayerStructure.AddNewGroup("test1", testLayer1.LayerGuid);
- Assert.Equal(0, doc.Layers.IndexOf(testLayer));
- Assert.Equal(1, doc.Layers.IndexOf(testLayer1));
- doc.LayerStructure.MoveGroup(doc.LayerStructure.Groups[0].GroupGuid, 1);
- Assert.Equal(1, doc.Layers.IndexOf(testLayer));
- Assert.Equal(0, doc.Layers.IndexOf(testLayer1));
- }
- [Fact]
- public void TestThatIsChildOfDetectsNestedGroupCorrectly()
- {
- LayerStructure ls = new LayerStructure(new Document(0, 0));
- Layer testLayer = new Layer("tst");
- ls.Groups.Add(new GuidStructureItem("group 1", testLayer.LayerGuid));
- ls.Groups[0].Subgroups.Add(new GuidStructureItem("group 1 nested", testLayer.LayerGuid));
- Assert.True(ls.IsChildOf(ls.Groups[0].Subgroups[0], ls.Groups[0]));
- Assert.False(ls.IsChildOf(ls.Groups[0], ls.Groups[0].Subgroups[0]));
- }
- [Fact]
- public void TestThatIsChildOfDetectsNestedLayersCorrectly()
- {
- var doc = new Document(0, 0);
- doc.Layers.Add(new Layer("tst"));
- Guid testLayerGuid = doc.Layers[0].LayerGuid;
- LayerStructure ls = new LayerStructure(doc);
- ls.AddNewGroup("Test group", testLayerGuid);
- ls.AddNewGroup("Test group nested", testLayerGuid);
- Assert.True(ls.IsChildOf(testLayerGuid, ls.Groups[0]));
- Assert.True(ls.IsChildOf(testLayerGuid, ls.Groups[0].Subgroups[0]));
- }
- [Fact]
- public void TestThatGroupContainsOnlyLayerDetectsOnlySingleLayerCorrectly()
- {
- var doc = new Document(0, 0);
- doc.Layers.Add(new Layer("layer"));
- var guid = doc.Layers[0].LayerGuid;
- doc.LayerStructure.AddNewGroup("layer group", guid);
- Assert.True(LayerStructure.GroupContainsOnlyLayer(guid, doc.LayerStructure.Groups[0]));
- }
- [Fact]
- public void TestThatGroupContainsOnlyLayerDetectsOnlySingleLayerThatIsNested()
- {
- var doc = new Document(0, 0);
- doc.Layers.Add(new Layer("layer"));
- var guid = doc.Layers[0].LayerGuid;
- doc.LayerStructure.AddNewGroup("layer group", guid);
- doc.LayerStructure.AddNewGroup("layer group nested", guid);
- Assert.False(LayerStructure.GroupContainsOnlyLayer(guid, doc.LayerStructure.Groups[0]));
- Assert.True(LayerStructure.GroupContainsOnlyLayer(guid, doc.LayerStructure.Groups[0].Subgroups[0]));
- }
- [Fact]
- public void TestThatCloneReturnsSameLayerStructure()
- {
- Document doc = new(0, 0);
- doc.Layers.Add(new("Test"));
- doc.Layers.Add(new("Test2"));
- LayerStructure structure = new(doc);
- structure.AddNewGroup("Test group", doc.Layers[0].LayerGuid);
- var clone = structure.CloneGroups();
- Assert.Equal(structure.Groups.Count, clone.Count);
- Assert.Single(clone);
- Assert.Equal(structure.Groups[0].GroupGuid, clone[0].GroupGuid);
- }
- [Fact]
- public void TestThatGetGroupByGuidReturnsNullForNonExistingGroup()
- {
- Document doc = new(0, 0);
- doc.Layers.Add(new("Test"));
- Assert.Null(doc.LayerStructure.GetGroupByGuid(null));
- Assert.Null(doc.LayerStructure.GetGroupByGuid(Guid.NewGuid()));
- }
- [Fact]
- public void TestThatGetGroupByGuidReturnsGroupCorrectly()
- {
- Document doc = new(0, 0);
- doc.Layers.Add(new("Test"));
- var group = doc.LayerStructure.AddNewGroup("Test group", doc.Layers[0].LayerGuid);
- Assert.Equal(group.GroupGuid, doc.LayerStructure.GetGroupByGuid(group.GroupGuid).GroupGuid);
- }
- [Fact]
- public void TestThatPreMoveReassignBoundsMakesNestedGroupEmptyAndRemovesItAndParent()
- {
- Document doc = new(0, 0);
- doc.Layers.Add(new("Test"));
- doc.LayerStructure.AddNewGroup("Test group", doc.Layers[0].LayerGuid);
- var group1 = doc.LayerStructure.AddNewGroup("Test group nested", doc.Layers[0].LayerGuid);
- doc.LayerStructure.PreMoveReassignBounds(new GroupData(group1.GroupGuid), doc.Layers[0].LayerGuid);
- Assert.Empty(doc.LayerStructure.Groups);
- }
- [Fact]
- public void TestThatPostMoveReassignBoundsAssignsNewLayerToGroup()
- {
- Document doc = new(0, 0);
- doc.Layers.Add(new("Test"));
- doc.LayerStructure.AddNewGroup("Test group", doc.Layers[0].LayerGuid);
- var group1 = doc.LayerStructure.AddNewGroup("Test group nested", doc.Layers[0].LayerGuid);
- doc.Layers.Add(new("Test 1"));
- var firstLayer = doc.Layers[0];
- var layer = doc.Layers[^1];
- doc.LayerStructure.PostMoveReassignBounds(new GroupData(group1.GroupGuid), layer.LayerGuid);
- Assert.Single(doc.LayerStructure.Groups);
- Assert.Single(doc.LayerStructure.Groups[0].Subgroups);
- Assert.Equal(layer.LayerGuid, doc.LayerStructure.Groups[0].Subgroups[0].EndLayerGuid);
- Assert.Equal(firstLayer.LayerGuid, doc.LayerStructure.Groups[0].Subgroups[0].StartLayerGuid);
- Assert.Equal(layer.LayerGuid, doc.LayerStructure.Groups[0].EndLayerGuid);
- Assert.Equal(firstLayer.LayerGuid, doc.LayerStructure.Groups[0].StartLayerGuid);
- }
- [Fact]
- public void TestThatAssignParentAssignsParent()
- {
- Document doc = new(0, 0);
- doc.Layers.Add(new Layer("Test"));
- var firstLayer = doc.Layers[0];
- doc.LayerStructure.AddNewGroup("Test group", doc.Layers[0].LayerGuid);
- doc.Layers.Add(new Layer("Test 1"));
- var layer = doc.Layers[^1];
- doc.LayerStructure.AssignParent(doc.Layers[^1].LayerGuid, doc.LayerStructure.Groups[0].GroupGuid);
- Assert.Equal(layer.LayerGuid, doc.LayerStructure.Groups[0].EndLayerGuid);
- Assert.Equal(firstLayer.LayerGuid, doc.LayerStructure.Groups[0].StartLayerGuid);
- }
- [Fact]
- public void TestThatAssignParentDeAssignsParentOnNull()
- {
- Document doc = new(0, 0);
- doc.Layers.Add(new Layer("Test"));
- var firstLayer = doc.Layers[0];
- doc.LayerStructure.AddNewGroup("Test group", doc.Layers[0].LayerGuid);
- doc.Layers.Add(new Layer("Test 1"));
- var layer = doc.Layers[^1];
- doc.LayerStructure.AssignParent(layer.LayerGuid, doc.LayerStructure.Groups[0].GroupGuid);
- doc.LayerStructure.AssignParent(layer.LayerGuid, null);
- Assert.Equal(firstLayer.LayerGuid, doc.LayerStructure.Groups[0].EndLayerGuid);
- Assert.Equal(firstLayer.LayerGuid, doc.LayerStructure.Groups[0].StartLayerGuid);
- }
- [Fact]
- public void TestThatGetGroupLayersReturnsAllLayersInGroup()
- {
- Document doc = new(0, 0);
- doc.Layers.Add(new Layer("Test"));
- doc.Layers.Add(new Layer("Test 1"));
- doc.Layers.Add(new Layer("Test 2"));
- doc.Layers.Add(new Layer("Test 3"));
- doc.LayerStructure.AddNewGroup("Test group", doc.Layers[0].LayerGuid);
- doc.LayerStructure.AssignParent(doc.Layers[1].LayerGuid, doc.LayerStructure.Groups[0].GroupGuid);
- doc.LayerStructure.AssignParent(doc.Layers[2].LayerGuid, doc.LayerStructure.Groups[0].GroupGuid);
- doc.LayerStructure.AddNewGroup("Test group", doc.Layers[2].LayerGuid);
- var layersInGroup = doc.LayerStructure.GetGroupLayers(doc.LayerStructure.Groups[0]);
- Assert.Equal(3, layersInGroup.Count);
- Assert.Contains(doc.Layers[0], layersInGroup);
- Assert.Contains(doc.Layers[1], layersInGroup);
- Assert.Contains(doc.Layers[2], layersInGroup);
- }
- }
- }
|