public void VersionSplitterEMail() { string value = "*****@*****.**"; Splitter splitter = VersionSplitter.GetInstance(); splitter.GetSingleSplit(value, 1).Should().Be("*****@*****.**"); splitter.GetSingleSplit(value, 2).Should().BeNull(); splitter.GetFirstSplits(value, 1).Should().Be("*****@*****.**"); splitter.GetFirstSplits(value, 2).Should().BeNull(); }
public void VersionSplitterOne() { string value = "123"; Splitter splitter = VersionSplitter.GetInstance(); splitter.GetSingleSplit(value, -5).Should().BeNull(); splitter.GetSingleSplit(value, -1).Should().BeNull(); splitter.GetSingleSplit(value, 0).Should().BeNull(); splitter.GetSingleSplit(value, 1).Should().Be("123"); splitter.GetSingleSplit(value, 2).Should().BeNull(); splitter.GetFirstSplits(value, -5).Should().BeNull(); splitter.GetFirstSplits(value, -1).Should().BeNull(); splitter.GetFirstSplits(value, 0).Should().BeNull(); splitter.GetFirstSplits(value, 1).Should().Be("123"); splitter.GetFirstSplits(value, 2).Should().BeNull(); }
public void VersionSplitterRanges() { string value = "1.2.3.4.5"; Splitter splitter = VersionSplitter.GetInstance(); // Bad values splitter.GetSplitRange(value, 4, 2).Should().BeNull(); splitter.GetSplitRange(null, 2, 3).Should().BeNull(); // Single version splitter.GetSplitRange(value, 0, 0).Should().BeNull(); splitter.GetSplitRange(value, 1, 1).Should().Be("1"); splitter.GetSplitRange(value, 2, 2).Should().Be("2"); splitter.GetSplitRange(value, 3, 3).Should().Be("3"); splitter.GetSplitRange(value, 4, 4).Should().Be("4"); splitter.GetSplitRange(value, 5, 5).Should().Be("5"); splitter.GetSplitRange(value, 6, 6).Should().BeNull(); // First versions splitter.GetSplitRange(value, 1, 0).Should().BeNull(); splitter.GetSplitRange(value, 1, 1).Should().Be("1"); splitter.GetSplitRange(value, 1, 2).Should().Be("1.2"); splitter.GetSplitRange(value, 1, 3).Should().Be("1.2.3"); splitter.GetSplitRange(value, 1, 4).Should().Be("1.2.3.4"); splitter.GetSplitRange(value, 1, 5).Should().Be("1.2.3.4.5"); splitter.GetSplitRange(value, 1, 6).Should().BeNull(); //// Last versions splitter.GetSplitRange(value, 0, -1).Should().BeNull(); splitter.GetSplitRange(value, 1, -1).Should().Be("1.2.3.4.5"); splitter.GetSplitRange(value, 2, -1).Should().Be("2.3.4.5"); splitter.GetSplitRange(value, 3, -1).Should().Be("3.4.5"); splitter.GetSplitRange(value, 4, -1).Should().Be("4.5"); splitter.GetSplitRange(value, 5, -1).Should().Be("5"); splitter.GetSplitRange(value, 6, -1).Should().BeNull(); //// 2 version slice splitter.GetSplitRange(value, 0, 1).Should().BeNull(); splitter.GetSplitRange(value, 1, 2).Should().Be("1.2"); splitter.GetSplitRange(value, 2, 3).Should().Be("2.3"); splitter.GetSplitRange(value, 3, 4).Should().Be("3.4"); splitter.GetSplitRange(value, 4, 5).Should().Be("4.5"); splitter.GetSplitRange(value, 5, 6).Should().BeNull(); }
public void VersionSplitterDOT() { string value = "1.2.3"; Splitter splitter = VersionSplitter.GetInstance(); splitter.GetSingleSplit(value, -1).Should().BeNull(); splitter.GetSingleSplit(value, 0).Should().BeNull(); splitter.GetSingleSplit(value, 1).Should().Be("1"); splitter.GetSingleSplit(value, 2).Should().Be("2"); splitter.GetSingleSplit(value, 3).Should().Be("3"); splitter.GetSingleSplit(value, 4).Should().BeNull(); splitter.GetFirstSplits(value, -1).Should().BeNull(); splitter.GetFirstSplits(value, 0).Should().BeNull(); splitter.GetFirstSplits(value, 1).Should().Be("1"); splitter.GetFirstSplits(value, 2).Should().Be("1.2"); splitter.GetFirstSplits(value, 3).Should().Be("1.2.3"); splitter.GetFirstSplits(value, 4).Should().BeNull(); }
private void Initialize(EndianBinaryReader reader, string fileName) { var tableSize = reader.ReadInt32(); var dataEnd = reader.ReadInt32(); var fileFormatVersion = reader.ReadInt32(); var dataOffset = reader.ReadUInt32(); FileFormatVersion = fileFormatVersion; FullFileName = Path.GetFullPath(fileName); var baseDefinitions = false; var platform = 0; switch (fileFormatVersion) { case 6: reader.Position = dataEnd - tableSize; reader.Position += 1; break; case 7: reader.Position = dataEnd - tableSize; reader.Position += 1; Version = reader.ReadStringToNull(); break; case 8: reader.Position = dataEnd - tableSize; reader.Position += 1; Version = reader.ReadStringToNull(); platform = reader.ReadInt32(); break; case 9: reader.Position += 4; Version = reader.ReadStringToNull(); platform = reader.ReadInt32(); break; case 14: case 15: case 16: case 17: reader.Position += 4; Version = reader.ReadStringToNull(); platform = reader.ReadInt32(); baseDefinitions = reader.ReadBoolean(); break; default: throw new FormatException(); } if (platform > 255 || platform < 0) { platform = EndianHelper.SwapEndian(platform); reader.Endian = Endian.LittleEndian; } Platform = (AssetPlatform)platform; ReadClasses(reader, fileFormatVersion, baseDefinitions); if (7 <= fileFormatVersion && fileFormatVersion < 14) { reader.Position += 4; } ReadAssetsPreloadTable(reader, fileFormatVersion, dataOffset); // May be buggy... // The original author assumes these two properties are not used in Unity 2.5.x (in BuildSettings class). VersionComponents = VersionSplitter .Split(Version) .Select(str => Convert.ToInt32(str)) .ToArray(); BuildType = BuildTypePattern.Match(Version).Groups["build"].Value; // 2017.x version handling is solved by better pattern splitting, so we skipped here. if (fileFormatVersion >= 14) { var someCount = reader.ReadInt32(); for (var i = 0; i < someCount; ++i) { var dummy1 = reader.ReadInt32(); reader.AlignBy(4); var pathID = reader.ReadInt64(); } } var sharedFileCount = reader.ReadInt32(); var sharedFileList = new SharedAssetInfo[sharedFileCount]; for (var i = 0; i < sharedFileCount; ++i) { var shared = new SharedAssetInfo(); shared.SomeName = reader.ReadStringToNull(); reader.Position += 20; var sharedFileName = reader.ReadStringToNull(); shared.FileName = sharedFileName; sharedFileList[i] = shared; } SharedAssetList = sharedFileList; }