public void TestWithPackage() { var inputs = new AssetItemCollection(); var asset = new AssetObjectTest(); var package = new Package(); package.Assets.Add(new AssetItem("0", asset)); for (int i = 0; i < 10; i++) { var newAsset = new AssetObjectTest() { Id = asset.Id, Reference = new AssetReference <AssetObjectTest>(asset.Id, "bad") }; inputs.Add(new AssetItem("0", newAsset)); } // Tries to use existing ids var outputs = new AssetItemCollection(); AssetCollision.Clean(null, inputs, outputs, AssetResolver.FromPackage(package), true); // Make sure we are generating exactly the same number of elements Assert.AreEqual(inputs.Count, outputs.Count); // Make sure that asset has been cloned Assert.AreNotEqual(inputs[0], outputs[0]); // First Id should not change Assert.AreNotEqual(inputs[0].Id, outputs[0].Id); // Make sure that all ids are different var ids = new HashSet <Guid>(outputs.Select(item => item.Id)); Assert.AreEqual(inputs.Count, ids.Count); // Make sure that all locations are different var locations = new HashSet <UFile>(outputs.Select(item => item.Location)); Assert.AreEqual(inputs.Count, locations.Count); // Reference location "bad"should be fixed to "0_1" pointing to the first element foreach (var output in outputs) { // Make sure of none of the locations are using "0" Assert.AreNotEqual("0", output.Location); var assetRef = ((AssetObjectTest)output.Asset).Reference; Assert.AreEqual("0 (2)", assetRef.Location); Assert.AreEqual(outputs[0].Id, assetRef.Id); } }
public void TestSimpleNewGuids() { var inputs = new AssetItemCollection(); var asset = new AssetObjectTest(); for (int i = 0; i < 10; i++) { var newAsset = new AssetObjectTest() { Id = asset.Id, Reference = new AssetReference <AssetObjectTest>(asset.Id, "bad") }; inputs.Add(new AssetItem("0", newAsset)); } // Force to use new ids var outputs = new AssetItemCollection(); AssetCollision.Clean(null, inputs, outputs, new AssetResolver() { AlwaysCreateNewId = true }, true); // Make sure we are generating exactly the same number of elements Assert.AreEqual(inputs.Count, outputs.Count); // Make sure that asset has been cloned Assert.AreNotEqual(inputs[0], outputs[0]); // First Id should not change Assert.AreNotEqual(inputs[0].Id, outputs[0].Id); // Make sure that all ids are different var ids = new HashSet <Guid>(outputs.Select(item => item.Id)); Assert.AreEqual(inputs.Count, ids.Count); // Make sure that all locations are different var locations = new HashSet <UFile>(outputs.Select(item => item.Location)); Assert.AreEqual(inputs.Count, locations.Count); // Reference location "bad"should be fixed to "0" foreach (var output in outputs) { var assetRef = ((AssetObjectTest)output.Asset).Reference; Assert.AreEqual("0", assetRef.Location); Assert.AreEqual(outputs[0].Id, assetRef.Id); } }
public void TestAssetItemCollection() { // Test serialization of asset items. var inputs = new AssetItemCollection(); for (int i = 0; i < 10; i++) { var newAsset = new AssetObjectTest() { Name = "Test" + i }; inputs.Add(new AssetItem("" + i, newAsset)); } var asText = inputs.ToText(); var outputs = AssetItemCollection.FromText(asText); Assert.AreEqual(inputs.Select(item => item.Location), outputs.Select(item => item.Location)); Assert.AreEqual(inputs.Select(item => item.Asset), outputs.Select(item => item.Asset)); }
public void TestSimple() { var inputs = new AssetItemCollection(); var asset = new AssetObjectTest(); for (int i = 0; i < 10; i++) { var newAsset = new AssetObjectTest() { Id = asset.Id, Reference = new AssetReference<AssetObjectTest>(asset.Id, "bad")}; inputs.Add(new AssetItem("0", newAsset)); } // Tries to use existing ids var outputs = new AssetItemCollection(); AssetCollision.Clean(inputs, outputs, new AssetResolver(), true); // Make sure we are generating exactly the same number of elements Assert.AreEqual(inputs.Count, outputs.Count); // Make sure that asset has been cloned Assert.AreNotEqual(inputs[0], outputs[0]); // First Id should not change Assert.AreEqual(inputs[0].Id, outputs[0].Id); // Make sure that all ids are different var ids = new HashSet<Guid>(outputs.Select(item => item.Id)); Assert.AreEqual(inputs.Count, ids.Count); // Make sure that all locations are different var locations = new HashSet<UFile>(outputs.Select(item => item.Location)); Assert.AreEqual(inputs.Count, locations.Count); // Reference location "bad"should be fixed to "0" foreach (var output in outputs) { var assetRef = ((AssetObjectTest)output.Asset).Reference; Assert.AreEqual("0", assetRef.Location); Assert.AreEqual(outputs[0].Id, assetRef.Id); } }