Streamingle_URP/Assets/External/UniGLTF/Tests/UniGLTF/TextureEnumerateTests.cs

244 lines
8.6 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using NUnit.Framework;
namespace UniGLTF
{
public class TextureEnumerateTests
{
static glTF TwoTexture()
{
return new glTF
{
images = new List<glTFImage>
{
new glTFImage{
name = "image_0",
mimeType = "image/png",
},
new glTFImage{
name = "image_1",
mimeType = "image/png",
},
},
textures = new List<glTFTexture>
{
new glTFTexture{
name = "texture_0",
source = 0,
},
new glTFTexture{
name = "texture_1",
source = 1,
},
},
materials = new List<glTFMaterial>
{
new glTFMaterial{
pbrMetallicRoughness = new glTFPbrMetallicRoughness{
baseColorTexture = new glTFMaterialBaseColorTextureInfo{
index = 0,
}
}
},
new glTFMaterial{
pbrMetallicRoughness = new glTFPbrMetallicRoughness{
baseColorTexture = new glTFMaterialBaseColorTextureInfo{
index = 1,
}
}
},
new glTFMaterial{
pbrMetallicRoughness = new glTFPbrMetallicRoughness{
baseColorTexture = new glTFMaterialBaseColorTextureInfo{
index = 0,
}
}
},
},
};
}
static glTF TwoTextureOneUri()
{
return new glTF
{
images = new List<glTFImage>
{
new glTFImage{
name = "image_0",
mimeType = "image/png",
uri = "some.png",
},
new glTFImage{
name = "image_1",
mimeType = "image/png",
uri = "some.png",
},
},
textures = new List<glTFTexture>
{
new glTFTexture{
name = "texture_0",
source = 0,
},
new glTFTexture{
name = "texture_1",
source = 1,
},
},
materials = new List<glTFMaterial>
{
new glTFMaterial{
pbrMetallicRoughness = new glTFPbrMetallicRoughness{
baseColorTexture = new glTFMaterialBaseColorTextureInfo{
index = 0,
}
}
},
new glTFMaterial{
pbrMetallicRoughness = new glTFPbrMetallicRoughness{
baseColorTexture = new glTFMaterialBaseColorTextureInfo{
index = 1,
}
}
},
},
};
}
static glTF TwoTextureOneImage()
{
return new glTF
{
images = new List<glTFImage>
{
new glTFImage{
name = "image_0",
mimeType = "image/png",
uri = "some.png",
},
},
textures = new List<glTFTexture>
{
new glTFTexture{
name = "texture_0",
source = 0,
},
new glTFTexture{
name = "texture_1",
source = 0,
},
},
materials = new List<glTFMaterial>
{
new glTFMaterial{
pbrMetallicRoughness = new glTFPbrMetallicRoughness{
baseColorTexture = new glTFMaterialBaseColorTextureInfo{
index = 0,
}
}
},
new glTFMaterial{
pbrMetallicRoughness = new glTFPbrMetallicRoughness{
baseColorTexture = new glTFMaterialBaseColorTextureInfo{
index = 1,
}
}
},
},
};
}
static glTF CombineMetallicSmoothOcclusion()
{
return new glTF
{
images = new List<glTFImage>
{
new glTFImage{
name = "image_0",
mimeType = "image/png",
uri = "metallicSmoothness.png",
},
new glTFImage{
name = "image_1",
mimeType = "image/png",
uri = "occlusion.png",
},
},
textures = new List<glTFTexture>
{
new glTFTexture{
name = "texture_0",
source = 0,
},
new glTFTexture{
name = "texture_1",
source = 1,
},
},
materials = new List<glTFMaterial>
{
new glTFMaterial{
pbrMetallicRoughness = new glTFPbrMetallicRoughness{
metallicRoughnessTexture = new glTFMaterialMetallicRoughnessTextureInfo{
index = 0,
}
},
occlusionTexture = new glTFMaterialOcclusionTextureInfo{
index = 1,
}
},
},
};
}
/// <summary>
/// Test uniqueness
/// </summary>
[Test]
public void TextureEnumerationTest()
{
{
var data = CreateGltfData(TwoTexture());
var items = new GltfTextureDescriptorGenerator(data).Get().GetEnumerable().ToArray();
Assert.AreEqual(2, items.Length);
}
{
var data = CreateGltfData(TwoTextureOneUri());
var items = new GltfTextureDescriptorGenerator(data).Get().GetEnumerable().ToArray();
Assert.AreEqual(1, items.Length);
}
{
var data = CreateGltfData(TwoTextureOneImage());
var items = new GltfTextureDescriptorGenerator(data).Get().GetEnumerable().ToArray();
Assert.AreEqual(1, items.Length);
}
{
var data = CreateGltfData(CombineMetallicSmoothOcclusion());
var items = new GltfTextureDescriptorGenerator(data).Get().GetEnumerable().ToArray();
Assert.AreEqual(1, items.Length);
}
}
private GltfData CreateGltfData(glTF gltf)
{
return new GltfData(
string.Empty,
string.Empty,
gltf,
new List<GlbChunk>(),
default,
new MigrationFlags()
);
}
}
}