Skip to content

Commit 1dcc38e

Browse files
committed
Refactored Analyzer tool
1 parent 86110c1 commit 1dcc38e

55 files changed

Lines changed: 9233 additions & 935 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
<Project Sdk="Microsoft.NET.Sdk">
2+
3+
<PropertyGroup>
4+
<TargetFramework>net6.0</TargetFramework>
5+
<ImplicitUsings>enable</ImplicitUsings>
6+
<Nullable>disable</Nullable>
7+
8+
<IsPackable>false</IsPackable>
9+
</PropertyGroup>
10+
11+
<ItemGroup>
12+
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.1.0" />
13+
<PackageReference Include="NUnit" Version="3.13.3" />
14+
<PackageReference Include="NUnit3TestAdapter" Version="4.2.1" />
15+
<PackageReference Include="NUnit.Analyzers" Version="3.3.0" />
16+
<PackageReference Include="coverlet.collector" Version="3.1.2" />
17+
</ItemGroup>
18+
19+
<ItemGroup>
20+
<ProjectReference Include="..\Analyzer\Analyzer.csproj" />
21+
<ProjectReference Include="..\TestCommon\TestCommon.csproj" />
22+
<ProjectReference Include="..\UnityFileSystem\UnityFileSystem.csproj" />
23+
</ItemGroup>
24+
25+
<ItemGroup>
26+
<None Include="ExpectedData\**" CopyToOutputDirectory="PreserveNewest" />
27+
</ItemGroup>
28+
29+
</Project>

Analyzer.Tests/ExpectedData/2019.4.0f1/ExpectedValues.json

Lines changed: 2363 additions & 0 deletions
Large diffs are not rendered by default.

Analyzer.Tests/ExpectedData/2020.3.0f1/ExpectedValues.json

Lines changed: 1269 additions & 0 deletions
Large diffs are not rendered by default.

Analyzer.Tests/ExpectedData/2021.3.0f1/ExpectedValues.json

Lines changed: 1269 additions & 0 deletions
Large diffs are not rendered by default.

Analyzer.Tests/ExpectedData/2022.1.20f1/ExpectedValues.json

Lines changed: 1269 additions & 0 deletions
Large diffs are not rendered by default.

Analyzer.Tests/ExpectedData/2023.1.0a16/ExpectedValues.json

Lines changed: 1434 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 46 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,46 @@
1+
using UnityDataTools.Analyzer.SerializedObjects;
2+
using UnityDataTools.FileSystem;
3+
using UnityDataTools.FileSystem.TypeTreeReaders;
4+
using UnityDataTools.TestCommon;
5+
6+
namespace UnityDataTools.UnityDataTool.Tests;
7+
8+
public static class ExpectedDataGenerator
9+
{
10+
public static void GenerateAll()
11+
{
12+
foreach (var context in Context.GetAll())
13+
{
14+
Generate(context);
15+
}
16+
}
17+
18+
public static void Generate(Context context)
19+
{
20+
UnityFileSystem.Init();
21+
using var archive = UnityFileSystem.MountArchive(Path.Combine(context.UnityDataFolder, "AssetBundles", "assetbundle"), "/");
22+
23+
using var serializedFile = UnityFileSystem.OpenSerializedFile("/CAB-5d40f7cad7c871cf2ad2af19ac542994");
24+
using var fileReader = new UnityFileReader("archive:/CAB-5d40f7cad7c871cf2ad2af19ac542994", 1024*1024);
25+
26+
var objectInfo = serializedFile.Objects.First(x => x.Id == -4850512016903265157);
27+
var node = serializedFile.GetTypeTreeRoot(objectInfo.Id);
28+
var reader = new RandomAccessReader(serializedFile, node, fileReader, objectInfo.Offset);
29+
var shader = Shader.Read(reader);
30+
31+
context.ExpectedData.Add("Shader", shader);
32+
33+
objectInfo = serializedFile.Objects.First(x => x.Id == -9023202112035587373);
34+
node = serializedFile.GetTypeTreeRoot(objectInfo.Id);
35+
reader = new RandomAccessReader(serializedFile, node, fileReader, objectInfo.Offset);
36+
var texture2D = Texture2D.Read(reader);
37+
38+
context.ExpectedData.Add("Texture2D", texture2D);
39+
40+
var di = new DirectoryInfo(context.TestDataFolder);
41+
var outputFolder = Path.Combine(di.Parent.Parent.Parent.Parent.FullName, "ExpectedData", context.UnityDataVersion);
42+
43+
Directory.CreateDirectory(outputFolder);
44+
context.ExpectedData.Save(outputFolder);
45+
}
46+
}
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
using NUnit.Framework;
2+
using UnityDataTools.FileSystem;
3+
using UnityDataTools.FileSystem.TypeTreeReaders;
4+
using UnityDataTools.Analyzer.SerializedObjects;
5+
using UnityDataTools.TestCommon;
6+
7+
namespace UnityDataTools.Analyzer.Tests;
8+
9+
#pragma warning disable NUnit2005, NUnit2006
10+
11+
public class SerializedObjectsTests : TestForAllVersions
12+
{
13+
private UnityArchive m_Archive;
14+
private SerializedFile m_SerializedFile;
15+
private UnityFileReader m_FileReader;
16+
17+
static SerializedObjectsTests()
18+
{
19+
//ExpectedDataGenerator.GenerateAll();
20+
}
21+
22+
public SerializedObjectsTests(Context context) : base(context)
23+
{
24+
}
25+
26+
[OneTimeSetUp]
27+
public void OneTimeSetup()
28+
{
29+
UnityFileSystem.Init();
30+
31+
var path = Path.Combine(Context.UnityDataFolder, "AssetBundles", "assetbundle");
32+
m_Archive = UnityFileSystem.MountArchive(path, "archive:/");
33+
m_SerializedFile = UnityFileSystem.OpenSerializedFile("archive:/CAB-5d40f7cad7c871cf2ad2af19ac542994");
34+
m_FileReader = new UnityFileReader("archive:/CAB-5d40f7cad7c871cf2ad2af19ac542994", 1024*1024);
35+
}
36+
37+
[OneTimeTearDown]
38+
public void TearDown()
39+
{
40+
m_FileReader.Dispose();
41+
m_SerializedFile.Dispose();
42+
m_Archive.Dispose();
43+
44+
UnityFileSystem.Cleanup();
45+
}
46+
47+
[Test]
48+
public void TestTexture2d()
49+
{
50+
var objectInfo = m_SerializedFile.Objects.First(x => x.Id == -9023202112035587373);
51+
var node = m_SerializedFile.GetTypeTreeRoot(objectInfo.Id);
52+
var reader = new RandomAccessReader(m_SerializedFile, node, m_FileReader, objectInfo.Offset);
53+
var texture = Texture2D.Read(reader);
54+
var expectedTexture = (Texture2D)Context.ExpectedData.Get("Texture2D");
55+
56+
Assert.AreEqual(expectedTexture.Name, texture.Name);
57+
Assert.AreEqual(expectedTexture.StreamDataSize, texture.StreamDataSize);
58+
Assert.AreEqual(expectedTexture.Width, texture.Width);
59+
Assert.AreEqual(expectedTexture.Height, texture.Height);
60+
Assert.AreEqual(expectedTexture.Format, texture.Format);
61+
Assert.AreEqual(expectedTexture.MipCount, texture.MipCount);
62+
Assert.AreEqual(expectedTexture.RwEnabled, texture.RwEnabled);
63+
}
64+
65+
/*[Test]
66+
public void AnimationClip()
67+
{
68+
var objectInfo = m_SerializedFile.Objects.First(x => x.Id == -9023202112035587373);
69+
var node = m_SerializedFile.GetTypeTreeRoot(objectInfo.Id);
70+
var reader = new RandomAccessReader(m_SerializedFile, node, m_FileReader, objectInfo.Offset);
71+
var texture = Texture2D.Read(reader);
72+
var expectedTexture = (Texture2D)Context.ExpectedData.Get("Texture2D");
73+
74+
Assert.AreEqual(expectedTexture.Name, texture.Name);
75+
Assert.AreEqual(expectedTexture.StreamDataSize, texture.StreamDataSize);
76+
Assert.AreEqual(expectedTexture.Width, texture.Width);
77+
Assert.AreEqual(expectedTexture.Height, texture.Height);
78+
Assert.AreEqual(expectedTexture.Format, texture.Format);
79+
Assert.AreEqual(expectedTexture.MipCount, texture.MipCount);
80+
Assert.AreEqual(expectedTexture.RwEnabled, texture.RwEnabled);
81+
}*/
82+
83+
[Test]
84+
public void TestShaderReader()
85+
{
86+
var objectInfo = m_SerializedFile.Objects.First(x => x.Id == -4850512016903265157);
87+
var node = m_SerializedFile.GetTypeTreeRoot(objectInfo.Id);
88+
var reader = new RandomAccessReader(m_SerializedFile, node, m_FileReader, objectInfo.Offset);
89+
var shader = Shader.Read(reader);
90+
var expectedShader = (Shader)Context.ExpectedData.Get("Shader");
91+
92+
Assert.AreEqual(expectedShader.Name, shader.Name);
93+
Assert.AreEqual(expectedShader.DecompressedSize, shader.DecompressedSize);
94+
CollectionAssert.AreEquivalent(expectedShader.Keywords, shader.Keywords);
95+
Assert.AreEqual(expectedShader.SubShaders.Count, shader.SubShaders.Count);
96+
97+
for (int i = 0; i < shader.SubShaders.Count; ++i)
98+
{
99+
var subShader = shader.SubShaders[i];
100+
var expectedSubShader = shader.SubShaders[i];
101+
102+
Assert.AreEqual(expectedSubShader.Passes.Count, subShader.Passes.Count);
103+
104+
for (int j = 0; j < subShader.Passes.Count; ++j)
105+
{
106+
var pass = subShader.Passes[i];
107+
var expectedPass = expectedSubShader.Passes[i];
108+
109+
Assert.AreEqual(expectedPass.Name, pass.Name);
110+
Assert.AreEqual(expectedPass.Programs.Count, pass.Programs.Count);
111+
CollectionAssert.AreEquivalent(expectedPass.Programs.Keys, pass.Programs.Keys);
112+
113+
foreach (var programsPerType in pass.Programs)
114+
{
115+
var programs = programsPerType.Value;
116+
var expectedPrograms = expectedPass.Programs[programsPerType.Key];
117+
118+
Assert.AreEqual(expectedPrograms.Count, programs.Count);
119+
120+
for (int k = 0; k < programs.Count; ++k)
121+
{
122+
var program = programs[k];
123+
var expectedProgram = expectedPrograms[k];
124+
125+
Assert.AreEqual(expectedProgram.Api, program.Api);
126+
Assert.AreEqual(expectedProgram.BlobIndex, program.BlobIndex);
127+
Assert.AreEqual(expectedProgram.HwTier, program.HwTier);
128+
CollectionAssert.AreEquivalent(expectedProgram.Keywords, program.Keywords);
129+
}
130+
}
131+
}
132+
}
133+
}
134+
}

0 commit comments

Comments
 (0)