public void TestIsRemoved() { RemovedByFeatureAttribute a; // Version a = new RemovedByFeatureAttribute("GL_VERSION_1_1"); Assert.IsTrue(a.IsRemoved(Gl.Version_110, null)); Assert.IsFalse(a.IsRemoved(Gl.Version_100, null)); // All versions greater than the requirement are supported Assert.IsTrue(a.IsRemoved(Gl.Version_120, null)); Assert.IsTrue(a.IsRemoved(Gl.Version_200, null)); Assert.IsTrue(a.IsRemoved(Gl.Version_450, null)); // a.FeatureVersion.Profile is null: any profile match Assert.IsTrue(a.IsRemoved(new KhronosVersion(Gl.Version_110, KhronosVersion.ProfileCompatibility), null)); a = new RemovedByFeatureAttribute("GL_VERSION_3_2"); a.Profile = KhronosVersion.ProfileCompatibility; // a.FeatureVersion.Profile is not null: specific profile match... Assert.IsTrue(a.IsRemoved(new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCompatibility), null)); Assert.IsFalse(a.IsRemoved(new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCore), null)); // ...and even unspecified profile Assert.IsTrue(a.IsRemoved(new KhronosVersion(Gl.Version_320, null), null)); // a.Api must match (no regex) Assert.IsFalse(a.IsRemoved(new KhronosVersion(Gl.Version_320_ES, KhronosVersion.ProfileCore), null)); // Extension a = new RemovedByFeatureAttribute("GL_ARB_multisample"); Assert.IsFalse(a.IsRemoved(new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCore), null)); Gl.Extensions extensions = new Gl.Extensions(); Assert.IsFalse(a.IsRemoved(new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCore), extensions)); extensions.EnableExtension("GL_ARB_multisample"); Assert.IsTrue(a.IsRemoved(new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCore), extensions)); // Note: extensions.MultisampleARB is not altered by EnableExtension // Version/Profile a = new RemovedByFeatureAttribute("GL_VERSION_3_2"); a.Profile = "core|compatibility"; Assert.IsTrue(a.IsRemoved(new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCore), null)); Assert.IsTrue(a.IsRemoved(new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCompatibility), null)); Assert.IsFalse(a.IsRemoved(new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCommon), null)); }
public void TestIsCompatibleField() { FieldInfo fi = typeof(KhronosApiTest).GetField("GetPointer", BindingFlags.Static | BindingFlags.Public); Gl.Extensions extensions = new Gl.Extensions(); Assert.IsFalse(KhronosApi.IsCompatibleField(fi, Gl.Version_100, extensions)); Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_110, extensions)); Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_150, extensions)); Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_210, extensions)); Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_300, extensions)); Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_310, extensions)); Assert.IsFalse(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCore), extensions)); Assert.IsFalse(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_400, KhronosVersion.ProfileCore), extensions)); Assert.IsFalse(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_410, KhronosVersion.ProfileCore), extensions)); Assert.IsFalse(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_420, KhronosVersion.ProfileCore), extensions)); Assert.IsTrue(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_430, KhronosVersion.ProfileCore), extensions)); Assert.IsTrue(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_440, KhronosVersion.ProfileCore), extensions)); Assert.IsTrue(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_320, KhronosVersion.ProfileCompatibility), extensions)); Assert.IsTrue(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_400, KhronosVersion.ProfileCompatibility), extensions)); Assert.IsTrue(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_410, KhronosVersion.ProfileCompatibility), extensions)); Assert.IsTrue(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_420, KhronosVersion.ProfileCompatibility), extensions)); Assert.IsTrue(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_430, KhronosVersion.ProfileCompatibility), extensions)); Assert.IsTrue(KhronosApi.IsCompatibleField(fi, new KhronosVersion(Gl.Version_440, KhronosVersion.ProfileCompatibility), extensions)); // Not sure how Profile can affect this... Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_100_ES, extensions)); Assert.IsFalse(KhronosApi.IsCompatibleField(fi, Gl.Version_200_ES, extensions)); Assert.IsFalse(KhronosApi.IsCompatibleField(fi, Gl.Version_300_ES, extensions)); Assert.IsFalse(KhronosApi.IsCompatibleField(fi, Gl.Version_310_ES, extensions)); Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_320_ES, extensions)); extensions.EnableExtension("GL_EXT_vertex_array"); Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_100, extensions)); extensions.EnableExtension("GL_KHR_debug"); Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_100, extensions)); Assert.IsTrue(KhronosApi.IsCompatibleField(fi, Gl.Version_200_ES, extensions)); }