84 lines
2.9 KiB
C#
84 lines
2.9 KiB
C#
using System;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using NUnit.Framework;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
using PackageInfo = UnityEditor.PackageManager.PackageInfo;
|
|
|
|
internal class VersionTests
|
|
{
|
|
static string GetHelpURLVersion<T>(string attributeName)
|
|
{
|
|
var customAttributes = typeof(T).GetCustomAttributes(false);
|
|
Assert.NotNull(customAttributes);
|
|
var urlAttribute = customAttributes.FirstOrDefault(attribute => attribute.GetType().Name == attributeName);
|
|
Assert.NotNull(urlAttribute);
|
|
var propertyInfo = GetProperty(urlAttribute.GetType(), "version", BindingFlags.NonPublic | BindingFlags.Static);
|
|
Assert.NotNull(propertyInfo);
|
|
var version = propertyInfo.GetValue(null) as string;
|
|
Assert.NotNull(version);
|
|
return version;
|
|
|
|
PropertyInfo GetProperty (Type type, string propertyName, BindingFlags bindingFlags)
|
|
{
|
|
var prop = type.GetProperty(propertyName, bindingFlags);
|
|
if (prop != null)
|
|
return prop;
|
|
else if (type.BaseType != null)
|
|
return GetProperty(type.BaseType, propertyName, bindingFlags);
|
|
return null;
|
|
}
|
|
}
|
|
|
|
struct Version
|
|
{
|
|
public int major;
|
|
public int minor;
|
|
public int patch;
|
|
|
|
public Version(string version)
|
|
{
|
|
major = minor = patch = 0;
|
|
var split = version.Split('.');
|
|
if (split.Length > 0) int.TryParse(split[0], out major);
|
|
if (split.Length > 1) int.TryParse(split[1], out minor);
|
|
if (split.Length > 2) int.TryParse(split[2], out patch);
|
|
}
|
|
|
|
public override string ToString()
|
|
{
|
|
return $"{major}.{minor}.{patch}";
|
|
}
|
|
|
|
public override bool Equals(object obj)
|
|
{
|
|
if (obj is Version other)
|
|
return major == other.major && minor == other.minor;
|
|
return false;
|
|
}
|
|
}
|
|
|
|
[Test]
|
|
public void CheckVersionParity()
|
|
{
|
|
var baseVersion = GetHelpURLVersion<RectTransform>("UIModuleHelpURL");
|
|
Assert.NotNull(baseVersion);
|
|
var uguiVersion = GetHelpURLVersion<Button>("UGUIHelpURL");
|
|
Assert.NotNull(uguiVersion);
|
|
var tmpVersion = GetHelpURLVersion<TextMeshProUGUI>("TMPHelpURL");
|
|
Assert.NotNull(tmpVersion);
|
|
var baseVersionNumber = new Version(baseVersion);
|
|
var uguiVersionNumber = new Version(uguiVersion);
|
|
var tmpVersionNumber = new Version(tmpVersion);
|
|
Assert.That(baseVersionNumber, Is.EqualTo(uguiVersionNumber).And.EqualTo(tmpVersionNumber));
|
|
|
|
var uguiPackageInfo = PackageInfo.FindForPackageName("com.unity.ugui");
|
|
Assert.NotNull(uguiPackageInfo);
|
|
var packageVersionNumber = new Version(uguiPackageInfo.version);
|
|
Assert.AreEqual(baseVersionNumber, packageVersionNumber);
|
|
}
|
|
}
|
|
|