public void RenameObjects_ChangeObjectToExistingObjectNameNotInRenameGroup_SkipsRename()
        {
            // Arrange
            var conflictingObject0 = this.CreatePrefabFromGameObject(
                new GameObject("ConflictingObject0"),
                string.Concat(TestFixturesDirectory, "ConflictingObject0.prefab"));

            this.CreatePrefabFromGameObject(
                new GameObject("ExistingObject"),
                string.Concat(TestFixturesDirectory, "ExistingObject.prefab"));

            var conflictingObjectsWithoutAllNamesChanging = new List <Object>();

            conflictingObjectsWithoutAllNamesChanging.Add(conflictingObject0);

            var replaceFirstNameOp = new ReplaceStringOperation();

            replaceFirstNameOp.SearchString      = "ConflictingObject0";
            replaceFirstNameOp.ReplacementString = "ExistingObject";

            var renameSequence = new RenameOperationSequence <IRenameOperation>();

            renameSequence.Add(replaceFirstNameOp);

            // Act and Assert
            var bulkRenamer = new BulkRenamer(renameSequence);

            bulkRenamer.RenameObjects(conflictingObjectsWithoutAllNamesChanging);
            var expectedName = "ConflictingObject0";

            Assert.AreEqual(expectedName, conflictingObject0.name);
        }
        public void RenameObjects_EnumeratedObjectsWithDependentChanges_Renames()
        {
            // Arrange
            var enumeratedObject0 = this.CreatePrefabFromGameObject(
                new GameObject("EnumeratedObject0"),
                string.Concat(TestFixturesDirectory, "EnumeratedObject0.prefab"));
            var enumeratedObject1 = this.CreatePrefabFromGameObject(
                new GameObject("EnumeratedObject1"),
                string.Concat(TestFixturesDirectory, "EnumeratedObject1.prefab"));
            var enumeratedObject2 = this.CreatePrefabFromGameObject(
                new GameObject("EnumeratedObject2"),
                string.Concat(TestFixturesDirectory, "EnumeratedObject2.prefab"));

            var enumeratedObjects = new List <Object>()
            {
                enumeratedObject0,
                enumeratedObject1,
                enumeratedObject2,
            };

            var removeCharactersOp     = new RemoveCharactersOperation();
            var removeCharacterOptions = new RemoveCharactersOperation.RenameOptions();

            removeCharacterOptions.CharactersToRemove = "\\d";
            removeCharacterOptions.CharactersAreRegex = true;
            removeCharacterOptions.IsCaseSensitive    = false;
            removeCharactersOp.SetOptions(removeCharacterOptions);

            var enumerateOp = new EnumerateOperation();

            enumerateOp.StartingCount = 1;

            var renameSequence = new RenameOperationSequence <IRenameOperation>();

            renameSequence.Add(removeCharactersOp);
            renameSequence.Add(enumerateOp);

            // Act
            var bulkRenamer = new BulkRenamer(renameSequence);

            bulkRenamer.RenameObjects(enumeratedObjects, true);

            // Assert
            // Build two lists to compare against because Assert displays their differences nicely in its output.
            var expectedNames = new List <string>
            {
                "EnumeratedObject1",
                "EnumeratedObject2",
                "EnumeratedObject3"
            };

            var resultingNames = new List <string>();

            foreach (var obj in enumeratedObjects)
            {
                resultingNames.Add(obj.name);
            }

            Assert.AreEqual(expectedNames, resultingNames);
        }
        /// <summary>
        /// Creates an operation sequence from its serialized string
        /// </summary>
        /// <returns>The operation sequence.</returns>
        /// <param name="str">Formerly serialized string.</param>
        public static RenameOperationSequence <IRenameOperation> FromString(string str)
        {
            // Versioning - convert old to new
            var isValueCircaPreVersion = string.IsNullOrEmpty(str) || str[0] != '[';

            if (isValueCircaPreVersion)
            {
                return(GetOpsFromPreVersionedString(str));
            }

            // Strip the version
            str = str.Substring(VersionTag.Length, str.Length - VersionTag.Length);
            var sequence = new RenameOperationSequence <IRenameOperation>();
            var lines    = str.Split('\n');

            foreach (var line in lines)
            {
                if (string.IsNullOrEmpty(line))
                {
                    continue;
                }

                sequence.Add(GetOperationFromStringEntry(line));
            }

            return(sequence);
        }
        public void GetNewName_ValidOperations_AreAppliedInOrder()
        {
            // Arrange
            var name = "Char_Hero_Idle";

            var replaceStringOp = new ReplaceStringOperation();

            replaceStringOp.SearchString      = "ar_He";
            replaceStringOp.ReplacementString = "baboon";

            var trimCharactersOp = new TrimCharactersOperation();

            trimCharactersOp.NumFrontDeleteChars = 4;

            var operationSequence = new RenameOperationSequence <IRenameOperation>();

            operationSequence.Add(replaceStringOp);
            operationSequence.Add(trimCharactersOp);

            var operationSequenceReversed = new RenameOperationSequence <IRenameOperation>();

            operationSequenceReversed.Add(trimCharactersOp);
            operationSequenceReversed.Add(replaceStringOp);

            var expected         = "boonro_Idle";
            var expectedReversed = "_Hero_Idle";

            // Act
            string result         = operationSequence.GetResultingName(name, 0);
            string resultReversed = operationSequenceReversed.GetResultingName(name, 0);

            // Assert
            Assert.AreEqual(expected, result);
            Assert.AreEqual(expectedReversed, resultReversed);
        }
        public void RenameObjects_SpritesheetsWithPrefixedNumbers_Renames()
        {
            // Tests Issue #163: https://github.com/redbluegames/unity-mulligan-renamer/issues/163
            // Arrange
            var spriteSheetConfig = new SpriteSheetGenerationConfig(2, "NumberedSprites.png");

            spriteSheetConfig.NamePrefix           = "0_NumberedSprites";
            spriteSheetConfig.UseZeroBasedIndexing = true;
            var textureWithSprites     = this.SetupSpriteSheet(spriteSheetConfig);
            var replaceStringOperation = new ReplaceStringOperation();

            replaceStringOperation.SearchString      = "Numbered";
            replaceStringOperation.ReplacementString = string.Empty;

            var renameSequence = new RenameOperationSequence <IRenameOperation>();

            renameSequence.Add(replaceStringOperation);

            var path            = AssetDatabase.GetAssetPath(textureWithSprites);
            var allAssetsAtPath = AssetDatabase.LoadAllAssetsAtPath(path);
            var allSprites      = new List <Object>();

            foreach (var asset in allAssetsAtPath)
            {
                if (asset is Sprite)
                {
                    allSprites.Add(asset);
                }
            }

            // Act
            var bulkRenamer = new BulkRenamer(renameSequence);

            bulkRenamer.RenameObjects(allSprites, true);

            // Assert
            var expectedNames = new List <string>
            {
                "0_Sprites0",
                "0_Sprites1",
                "0_Sprites2",
                "0_Sprites3",
            };

            var resultingNames = new List <string>();

            foreach (var sprite in allSprites)
            {
                resultingNames.Add(sprite.name);
            }

            // In order to not depend on how these sprites are Loaded, we check Contains instead of comparing
            // the lists directly
            Assert.That(resultingNames.Count, Is.EqualTo(expectedNames.Count));
            foreach (var name in resultingNames)
            {
                Assert.That(expectedNames.Contains(name), "Expected names did not contain name: " + name);
            }
        }
Exemple #6
0
        /// <summary>
        /// Create a new Instance of MulliganUserPreferences
        /// </summary>
        public MulliganUserPreferences()
        {
            // Default previous sequence to a replace string op just because it's
            // most user friendly
            this.previousSequence = new RenameOperationSequence <IRenameOperation>();
            this.previousSequence.Add(new ReplaceStringOperation());

            this.savedPresets = new List <RenameSequencePreset>();
        }
        public void RenameObjects_SpritesheetWithNamesThatWillOverlap_Renames()
        {
            // Tests Issue #126: https://github.com/redbluegames/unity-mulligan-renamer/issues/126
            // Arrange
            var spriteSheetConfig = new SpriteSheetGenerationConfig(2, "Texture.png");

            spriteSheetConfig.NamePrefix           = "Texture_Sprite";
            spriteSheetConfig.UseZeroBasedIndexing = true;
            var textureWithSprites = this.SetupSpriteSheet(spriteSheetConfig);
            var removeNumbersOp    = new RemoveCharactersOperation();

            removeNumbersOp.SetOptionPreset(RemoveCharactersOperation.PresetID.Numbers);
            var enumerateOp = new EnumerateOperation();

            enumerateOp.StartingCount = 1;
            enumerateOp.Increment     = 1;

            var renameSequence = new RenameOperationSequence <IRenameOperation>();

            renameSequence.Add(removeNumbersOp);
            renameSequence.Add(enumerateOp);

            var path            = AssetDatabase.GetAssetPath(textureWithSprites);
            var allAssetsAtPath = AssetDatabase.LoadAllAssetsAtPath(path);
            var allSprites      = new List <Object>();

            foreach (var asset in allAssetsAtPath)
            {
                if (asset is Sprite)
                {
                    allSprites.Add(asset);
                }
            }

            // Act
            var bulkRenamer = new BulkRenamer(renameSequence);

            bulkRenamer.RenameObjects(allSprites, true);

            // Assert
            var expectedNames = new List <string>
            {
                "Texture_Sprite1",
                "Texture_Sprite2",
                "Texture_Sprite3",
                "Texture_Sprite4",
            };

            var resultingNames = new List <string>();

            foreach (var sprite in allSprites)
            {
                resultingNames.Add(sprite.name);
            }

            Assert.AreEqual(expectedNames, resultingNames);
        }
        public void RenameObjects_Spritesheet_Renames()
        {
            // Arrange
            var spriteSheetConfig = new SpriteSheetGenerationConfig(2, "Texture.png");

            spriteSheetConfig.NamePrefix = "Texture_Sprite";
            var textureWithSprites = this.SetupSpriteSheet(spriteSheetConfig);
            var replaceNameOp      = new ReplaceNameOperation();

            replaceNameOp.NewName = "NewSprite";

            var enumerateOp = new EnumerateOperation();

            enumerateOp.StartingCount = 1;

            var renameSequence = new RenameOperationSequence <IRenameOperation>();

            renameSequence.Add(replaceNameOp);
            renameSequence.Add(enumerateOp);

            var path            = AssetDatabase.GetAssetPath(textureWithSprites);
            var allAssetsAtPath = AssetDatabase.LoadAllAssetsAtPath(path);
            var allSprites      = new List <Object>();

            foreach (var asset in allAssetsAtPath)
            {
                if (asset is Sprite)
                {
                    allSprites.Add(asset);
                }
            }

            var bulkRenamer = new BulkRenamer(renameSequence);

            bulkRenamer.RenameObjects(allSprites, true);

            var expectedNames = new List <string>
            {
                "NewSprite1",
                "NewSprite2",
                "NewSprite3",
                "NewSprite4"
            };

            var resultingNames = new List <string>();

            foreach (var sprite in allSprites)
            {
                resultingNames.Add(sprite.name);
            }

            Assert.AreEqual(expectedNames, resultingNames);
        }
Exemple #9
0
        private void CacheBulkRenamerPreview()
        {
            var operationSequence = new RenameOperationSequence <IRenameOperation>();

            foreach (var binding in this.RenameOperationsToApplyWithBindings)
            {
                operationSequence.Add(binding.Operation);
            }

            this.BulkRenamer.SetRenameOperations(operationSequence);
            this.BulkRenamePreview = this.BulkRenamer.GetBulkRenamePreview(this.ObjectsToRename.ToList());
        }
        public void RenameObjects_SpritesheetsWithPrefixedNumbers_Renames()
        {
            // Tests Issue #163: https://github.com/redbluegames/unity-mulligan-renamer/issues/163
            // Arrange
            var spriteSheetConfig = new SpriteSheetGenerationConfig(2, "NumberedSprites.png");

            spriteSheetConfig.NamePrefix           = "0_NumberedSprites";
            spriteSheetConfig.UseZeroBasedIndexing = true;
            var textureWithSprites     = this.SetupSpriteSheet(spriteSheetConfig);
            var replaceStringOperation = new ReplaceStringOperation();

            replaceStringOperation.SearchString      = "Numbered";
            replaceStringOperation.ReplacementString = string.Empty;

            var renameSequence = new RenameOperationSequence <IRenameOperation>();

            renameSequence.Add(replaceStringOperation);

            var path            = AssetDatabase.GetAssetPath(textureWithSprites);
            var allAssetsAtPath = AssetDatabase.LoadAllAssetsAtPath(path);
            var allSprites      = new List <Object>();

            foreach (var asset in allAssetsAtPath)
            {
                if (asset is Sprite)
                {
                    allSprites.Add(asset);
                }
            }

            // Act
            var bulkRenamer = new BulkRenamer(renameSequence);

            bulkRenamer.RenameObjects(allSprites, true);

            // Assert
            var expectedNames = new List <string>
            {
                "0_Sprites0",
                "0_Sprites1",
                "0_Sprites2",
                "0_Sprites3",
            };

            var resultingNames = new List <string>();

            foreach (var sprite in allSprites)
            {
                resultingNames.Add(sprite.name);
            }

            Assert.AreEqual(expectedNames, resultingNames);
        }
        public void SerializeToString_OneOperation_Serialize()
        {
            var dummyOperation = new DummyOperation();

            dummyOperation.Value = "Test";

            var operationSequence = new RenameOperationSequence <IRenameOperation>();

            operationSequence.Add(dummyOperation);

            string expectedSerializedString =
                "[RedBlueGames.MulliganRenamer.RenameOperationSequenceTests+DummyOperation]" +
                "{\"value\":\"Test\"}";

            Assert.AreEqual(expectedSerializedString, operationSequence.ToSerializableString());
        }
        private void ResetAllValuesToDefault()
        {
            // Reset all values to default as if this is a new instance
            this.lastUsedPresetName         = string.Empty;
            this.serializedPreviousSequence = string.Empty;
            this.numSessionsUsed            = 0;
            this.hasClickedPrompt           = false;
            this.ResetColorsToDefault();

            // Default the previous sequence to a replace string op just because it's
            // most user friendly
            this.previousSequence = new RenameOperationSequence <IRenameOperation>();
            this.previousSequence.Add(new ReplaceStringOperation());

            this.savedPresets = new List <RenameSequencePreset>();
        }
        private static RenameOperationSequence <IRenameOperation> GetOpsFromPreVersionedString(string str)
        {
            var ops        = str.Split(',');
            var operations = new RenameOperationSequence <IRenameOperation>();

            foreach (var op in ops)
            {
                if (UnversionedOperationSerializedKeys.ContainsKey(op))
                {
                    var operationInstance = (IRenameOperation)System.Activator.CreateInstance(
                        UnversionedOperationSerializedKeys[op]);
                    operations.Add(operationInstance);
                }
            }

            return(operations);
        }
        public void RenameObjects_RenameObjectToExistingObjectNameButAtDifferentPath_Succeeds()
        {
            // Arrange
            var conflictingObject0 = this.CreatePrefabFromGameObject(
                new GameObject("ConflictingObject0"),
                string.Concat(TestFixturesDirectory, "ConflictingObject0.prefab"));
            var existingObject = this.CreatePrefabFromGameObject(
                new GameObject("ExistingObject"),
                string.Concat(TestFixturesDirectory, "SubDirectory/ExistingObject.prefab"));

            var replaceFirstNameOp = new ReplaceStringOperation();

            replaceFirstNameOp.SearchString      = "ConflictingObject0";
            replaceFirstNameOp.ReplacementString = "ExistingObject";

            var renameSequence = new RenameOperationSequence <IRenameOperation>();

            renameSequence.Add(replaceFirstNameOp);

            var expectedNames = new List <string>
            {
                "ExistingObject",
                "ExistingObject"
            };

            var objectsToRename = new List <UnityEngine.Object>()
            {
                conflictingObject0,
                existingObject,
            };

            // Act and Assert
            var bulkRenamer = new BulkRenamer(renameSequence);

            bulkRenamer.RenameObjects(objectsToRename);

            var resultingNames = new List <string>();

            foreach (var obj in objectsToRename)
            {
                resultingNames.Add(obj.name);
            }

            Assert.AreEqual(expectedNames, resultingNames);
        }
            public static PreviewPanelContents CreatePreviewContentsForObjects(
                RenameOperationSequence <RenameOperation> renameSequence,
                List <UnityEngine.Object> objects)
            {
                var preview = new PreviewPanelContents();

                preview.PreviewRowInfos = new PreviewRowModel[objects.Count];

                for (int i = 0; i < preview.PreviewRowInfos.Length; ++i)
                {
                    var info         = new PreviewRowModel();
                    var originalName = objects[i].name;
                    info.RenameResultSequence = renameSequence.GetRenamePreview(originalName, i);

                    info.Icon = GetIconForObject(objects[i]);

                    preview.PreviewRowInfos[i] = info;
                }

                float paddingScaleForBold = 1.11f;

                preview.LongestOriginalNameWidth = 0.0f;
                preview.LongestNewNameWidth      = 0.0f;
                foreach (var previewRowInfo in preview.PreviewRowInfos)
                {
                    float originalNameWidth = GUI.skin.label.CalcSize(new GUIContent(previewRowInfo.RenameResultSequence.OriginalName)).x *paddingScaleForBold;
                    if (originalNameWidth > preview.LongestOriginalNameWidth)
                    {
                        preview.LongestOriginalNameWidth = originalNameWidth;
                    }

                    float newNameWidth = GUI.skin.label.CalcSize(new GUIContent(previewRowInfo.RenameResultSequence.NewName)).x *paddingScaleForBold;
                    if (newNameWidth > preview.LongestNewNameWidth)
                    {
                        preview.LongestNewNameWidth = newNameWidth;
                    }
                }

                preview.LongestOriginalNameWidth = Mathf.Max(MinColumnWidth, preview.LongestOriginalNameWidth);
                preview.LongestNewNameWidth      = Mathf.Max(MinColumnWidth, preview.LongestNewNameWidth);
                preview.LongestFinalNameWidth    = preview.LongestNewNameWidth;

                return(preview);
            }
        public void RenameObjects_MultipleAssets_Renames()
        {
            // Arrange
            var multipleObject0 = this.CreatePrefabFromGameObject(
                new GameObject("Asset0"),
                string.Concat(TestFixturesDirectory, "Asset0.prefab"));
            var multipleObject1 = this.CreatePrefabFromGameObject(
                new GameObject("Asset1"),
                string.Concat(TestFixturesDirectory, "Asset1.prefab"));
            var multipleAssets = new List <Object>()
            {
                multipleObject0,
                multipleObject1
            };

            var replaceStringOp = new ReplaceStringOperation();

            replaceStringOp.SearchString      = "Asset";
            replaceStringOp.ReplacementString = "Thingy";

            var renameSequence = new RenameOperationSequence <IRenameOperation>();

            renameSequence.Add(replaceStringOp);

            var bulkRenamer = new BulkRenamer(renameSequence);

            bulkRenamer.RenameObjects(multipleAssets, true);

            var expectedNames = new List <string>
            {
                "Thingy0",
                "Thingy1"
            };

            var resultingNames = new List <string>();

            foreach (var obj in multipleAssets)
            {
                resultingNames.Add(obj.name);
            }

            Assert.AreEqual(expectedNames, resultingNames);
        }
        public void DeserializeFromString_ValidOperations_Deserializes()
        {
            // Arrange
            string serializedString =
                "[" + typeof(DummyOperation).AssemblyQualifiedName + "]" +
                "{\"value\":\"Serialized value\"}";

            var dummyOperation = new DummyOperation();

            dummyOperation.Value = "Serialized value";
            var expectedSequence = new RenameOperationSequence <IRenameOperation>();

            expectedSequence.Add(dummyOperation);

            // Act
            var deserializedSequence = RenameOperationSequence <IRenameOperation> .FromString(serializedString);

            // Assert
            CollectionAssert.AreEqual(expectedSequence, deserializedSequence);
        }
        /// <summary>
        /// Renames the specified Objects according to a supplied RenameOperationSequence.
        /// </summary>
        /// <param name="objectsToRename">Objects to rename.</param>
        /// <param name="sequence">Sequence to use to generate new names.</param>
        /// <param name="ignoreUndo">If set to <c>true</c> ignore undo.</param>
        public void RenameObjects(List <UnityEngine.Object> objectsToRename, RenameOperationSequence <RenameOperation> sequence, bool ignoreUndo = false)
        {
            var objs = new List <ObjectNameDelta>();

            for (int i = 0; i < objectsToRename.Count; ++i)
            {
                var newName      = sequence.GetResultingName(objectsToRename[i].name, i);
                var originalName = objectsToRename[i].name;

                // Don't request a rename if the name isn't going to change.
                if (originalName.Equals(newName))
                {
                    continue;
                }

                objs.Add(new ObjectNameDelta(objectsToRename[i], newName));
            }

            this.RenameObjects(objs, ignoreUndo);
        }
        public void RenameObjects_SpriteAndTexture_Renames()
        {
            // Tests Issue #139: https://github.com/redbluegames/unity-mulligan-renamer/issues/139
            // Arrange
            var spriteSheetConfig = new SpriteSheetGenerationConfig(1, "Texture.png");

            spriteSheetConfig.NamePrefix = "Texture_Sprite";
            var textureWithSprites = this.SetupSpriteSheet(spriteSheetConfig);
            var replaceNameOp      = new ReplaceStringOperation();

            replaceNameOp.SearchString      = "Texture";
            replaceNameOp.ReplacementString = "Cool";

            var renameSequence = new RenameOperationSequence <IRenameOperation>();

            renameSequence.Add(replaceNameOp);

            var path            = AssetDatabase.GetAssetPath(textureWithSprites);
            var allAssetsAtPath = AssetDatabase.LoadAllAssetsAtPath(path);

            // Act
            var bulkRenamer = new BulkRenamer(renameSequence);

            bulkRenamer.RenameObjects(new List <Object>(allAssetsAtPath), true);

            // Assert
            var resultingNames = new List <string>();

            foreach (var asset in allAssetsAtPath)
            {
                resultingNames.Add(asset.name);
            }

            var expectedNames = new List <string>
            {
                "Cool",
                "Cool_Sprite1",
            };

            Assert.AreEqual(expectedNames, resultingNames);
        }
        public void GetNewName_AllOperations_RenamesCorrectly()
        {
            // Arrange
            var name = "Char_Hero_Idle";

            var trimCharactersOp = new TrimCharactersOperation();

            trimCharactersOp.NumFrontDeleteChars = 1;
            trimCharactersOp.NumBackDeleteChars  = 5;

            var replaceStringOp = new ReplaceStringOperation();

            replaceStringOp.SearchString      = "r_H";
            replaceStringOp.ReplacementString = "t_Z";

            var addStringOp = new AddStringOperation();

            addStringOp.Prefix = "a_";
            addStringOp.Suffix = "AA";

            var enumerateOp = new EnumerateOperation();

            enumerateOp.SetCountFormat("D4");
            enumerateOp.StartingCount = 100;

            var operationSequence = new RenameOperationSequence <IRenameOperation>();

            operationSequence.Add(trimCharactersOp);
            operationSequence.Add(replaceStringOp);
            operationSequence.Add(addStringOp);
            operationSequence.Add(enumerateOp);

            var expected = "a_hat_ZeroAA0100";

            // Act
            string result = operationSequence.GetResultingName(name, 0);

            // Assert
            Assert.AreEqual(expected, result);
        }
        public void RenameObjects_MultipleGameObjects_Renames()
        {
            var gameObject0 = new GameObject("GameObject0");
            var gameObject1 = new GameObject("GameObject1");

            var gameObjects = new List <Object>()
            {
                gameObject0,
                gameObject1
            };

            var replaceStringOp = new ReplaceStringOperation();

            replaceStringOp.SearchString      = "Object";
            replaceStringOp.ReplacementString = "Thingy";

            var renameSequence = new RenameOperationSequence <IRenameOperation>();

            renameSequence.Add(replaceStringOp);

            var bulkRenamer = new BulkRenamer(renameSequence);

            bulkRenamer.RenameObjects(gameObjects, true);

            var expectedNames = new List <string>
            {
                "GameThingy0",
                "GameThingy1"
            };

            var resultingNames = new List <string>();

            foreach (var obj in gameObjects)
            {
                resultingNames.Add(obj.name);
            }

            Assert.AreEqual(expectedNames, resultingNames);
        }
        public void SerializeToString_TwoOperations_Serialize()
        {
            var dummyOperation1 = new DummyOperation();

            dummyOperation1.Value = "First value";

            var dummyOperation2 = new DummyOperation();

            dummyOperation2.Value = "The next value";

            var operationSequence = new RenameOperationSequence <IRenameOperation>();

            operationSequence.Add(dummyOperation1);
            operationSequence.Add(dummyOperation2);

            string expectedSerializedString =
                "[RedBlueGames.MulliganRenamer.RenameOperationSequenceTests+DummyOperation]" +
                "{\"value\":\"First value\"}\n" +
                "[RedBlueGames.MulliganRenamer.RenameOperationSequenceTests+DummyOperation]" +
                "{\"value\":\"The next value\"}";

            Assert.AreEqual(expectedSerializedString, operationSequence.ToSerializableString());
        }
        public void RenameObjects_SingleAsset_Renames()
        {
            var gameObjectAsset = this.CreatePrefabFromGameObject(
                new GameObject("Original"),
                string.Concat(TestFixturesDirectory, "Original.prefab"));
            var singleAsset = new List <Object>()
            {
                gameObjectAsset
            };

            var replaceNameOp = new ReplaceNameOperation();

            replaceNameOp.NewName = "NewName";

            var renameSequence = new RenameOperationSequence <IRenameOperation>();

            renameSequence.Add(replaceNameOp);

            var bulkRenamer = new BulkRenamer(renameSequence);

            bulkRenamer.RenameObjects(singleAsset, true);

            Assert.AreEqual("NewName", singleAsset[0].name);
        }
        public void RenameObjects_SpritesheetWithTargetNameAsSubstringInMultipleSprites_Renames()
        {
            // Tests Issue #143: https://github.com/redbluegames/unity-mulligan-renamer/issues/143
            // Arrange
            var spriteSheetConfig = new SpriteSheetGenerationConfig(4, "Texture.png");
            var targetSpriteName  = "Texture_Sprite1";

            spriteSheetConfig.NamePrefix = "Texture_Sprite";
            var textureWithSprites = this.SetupSpriteSheet(spriteSheetConfig);
            var replaceNameOp      = new ReplaceStringOperation();

            replaceNameOp.SearchString      = targetSpriteName;
            replaceNameOp.ReplacementString = "CoolSprite";

            var renameSequence = new RenameOperationSequence <IRenameOperation>();

            renameSequence.Add(replaceNameOp);

            var    path            = AssetDatabase.GetAssetPath(textureWithSprites);
            var    allAssetsAtPath = AssetDatabase.LoadAllAssetsAtPath(path);
            var    allSprites      = new List <Object>();
            Object targetSprite    = null;

            foreach (var asset in allAssetsAtPath)
            {
                if (asset is Sprite)
                {
                    allSprites.Add(asset);
                    if (asset.name == targetSpriteName)
                    {
                        targetSprite = asset;
                    }
                }
            }

            // Act
            var bulkRenamer = new BulkRenamer(renameSequence);

            bulkRenamer.RenameObjects(new List <Object>()
            {
                targetSprite
            }, true);

            // Assert
            var expectedNames = new List <string>
            {
                "CoolSprite",
                "Texture_Sprite2",
                "Texture_Sprite3",
                "Texture_Sprite4",
                "Texture_Sprite5",
                "Texture_Sprite6",
                "Texture_Sprite7",
                "Texture_Sprite8",
                "Texture_Sprite9",
                "Texture_Sprite10",
                "Texture_Sprite11",
                "Texture_Sprite12",
                "Texture_Sprite13",
                "Texture_Sprite14",
                "Texture_Sprite15",
                "Texture_Sprite16",
            };

            var resultingNames = new List <string>();

            foreach (var sprite in allSprites)
            {
                resultingNames.Add(sprite.name);
            }

            // In order to not depend on how these sprites are Loaded, we check Contains instead of comparing
            // the lists directly
            Assert.That(resultingNames.Count, Is.EqualTo(expectedNames.Count));
            foreach (var name in resultingNames)
            {
                Assert.That(expectedNames.Contains(name), "Expected names did not contain name: " + name);
            }
        }
Exemple #25
0
 /// <summary>
 /// Sets the rename operations to use when renaming objects.
 /// </summary>
 /// <param name="renameOperationSequence">Rename operation sequence.</param>
 public void SetRenameOperations(RenameOperationSequence <IRenameOperation> renameOperationSequence)
 {
     this.operationSequence = renameOperationSequence;
 }
Exemple #26
0
        /// <summary>
        /// Initializes a new instance of the <see cref="RedBlueGames.MulliganRenamer.BulkRenamer"/> class.
        /// </summary>
        /// <param name="renameOperationSequence">Rename operation sequence to apply when renaming.</param>
        public BulkRenamer(RenameOperationSequence <IRenameOperation> renameOperationSequence)
        {
            this.Initialize();

            this.operationSequence = renameOperationSequence;
        }
        public void RenameObjects_SpritesheetWithTargetNameAsSubstringInMultipleSprites_Renames()
        {
            // Tests Issue #143: https://github.com/redbluegames/unity-mulligan-renamer/issues/143
            // Arrange
            var spriteSheetConfig = new SpriteSheetGenerationConfig(4, "Texture.png");

            spriteSheetConfig.NamePrefix = "Texture_Sprite";
            var textureWithSprites = this.SetupSpriteSheet(spriteSheetConfig);
            var replaceNameOp      = new ReplaceStringOperation();

            replaceNameOp.SearchString      = "Texture_Sprite1";
            replaceNameOp.ReplacementString = "CoolSprite";

            var renameSequence = new RenameOperationSequence <IRenameOperation>();

            renameSequence.Add(replaceNameOp);

            var path            = AssetDatabase.GetAssetPath(textureWithSprites);
            var allAssetsAtPath = AssetDatabase.LoadAllAssetsAtPath(path);
            var allSprites      = new List <Object>();

            foreach (var asset in allAssetsAtPath)
            {
                if (asset is Sprite)
                {
                    allSprites.Add(asset);
                }
            }

            // Act
            var bulkRenamer = new BulkRenamer(renameSequence);

            bulkRenamer.RenameObjects(new List <Object>()
            {
                allSprites[0]
            }, true);

            // Assert
            var expectedNames = new List <string>
            {
                "CoolSprite",
                "Texture_Sprite2",
                "Texture_Sprite3",
                "Texture_Sprite4",
                "Texture_Sprite5",
                "Texture_Sprite6",
                "Texture_Sprite7",
                "Texture_Sprite8",
                "Texture_Sprite9",
                "Texture_Sprite10",
                "Texture_Sprite11",
                "Texture_Sprite12",
                "Texture_Sprite13",
                "Texture_Sprite14",
                "Texture_Sprite15",
                "Texture_Sprite16",
            };

            var resultingNames = new List <string>();

            foreach (var sprite in allSprites)
            {
                resultingNames.Add(sprite.name);
            }

            Assert.AreEqual(expectedNames, resultingNames);
        }
Exemple #28
0
 /// <summary>
 /// Unity's callback after deserializing the object
 /// </summary>
 public void OnAfterDeserialize()
 {
     this.PreviousSequence = RenameOperationSequence <IRenameOperation> .FromString(
         this.serializedPreviousSequence);
 }