[uikit] Add UIContentSizeCategoryCompareToCategory & UIContentSizeCat… (#2805)

- Fixes bug #59422: https://bugzilla.xamarin.com/show_bug.cgi?id=59422)
This commit is contained in:
Vincent Dondain 2017-09-29 12:13:53 -04:00 коммит произвёл GitHub
Родитель cc89891b4a
Коммит 9b7cc6cbbe
4 изменённых файлов: 99 добавлений и 0 удалений

Просмотреть файл

@ -0,0 +1,46 @@
#if !WATCH
using System;
using System.Runtime.InteropServices;
using XamCore.ObjCRuntime;
using XamCore.Foundation;
namespace XamCore.UIKit {
static public partial class UIContentSizeCategoryExtensions {
[iOS (11, 0), TV (11, 0)]
[DllImport (Constants.UIKitLibrary)]
static extern nint /* NSComparisonResult */ UIContentSizeCategoryCompareToCategory (IntPtr /* NSString */ lhs, IntPtr /* NSString */ rhs);
[iOS (11, 0), TV (11, 0)]
public static NSComparisonResult Compare (UIContentSizeCategory category1, UIContentSizeCategory category2)
{
var c1 = category1.GetConstant ();
if (c1 == null)
throw new ArgumentException ($"Unknown 'UIContentSizeCategory' value", nameof (category1));
var c2 = category2.GetConstant ();
if (c2 == null)
throw new ArgumentException ($"Unknown 'UIContentSizeCategory' value", nameof (category2));
return (NSComparisonResult)(long)UIContentSizeCategoryCompareToCategory (c1.Handle, c2.Handle);
}
[iOS (11, 0), TV (11, 0)]
[DllImport (Constants.UIKitLibrary)]
static extern bool UIContentSizeCategoryIsAccessibilityCategory (IntPtr /* NSString */ category);
[iOS (11, 0), TV (11, 0)]
static public bool IsAccessibilityCategory (this UIContentSizeCategory self)
{
var c1 = self.GetConstant ();
if (c1 == null)
throw new ArgumentException ($"Unknown 'UIContentSizeCategory' value");
return UIContentSizeCategoryIsAccessibilityCategory (c1.Handle);
}
}
}
#endif // !WATCH

Просмотреть файл

@ -1360,6 +1360,7 @@ UIKIT_SOURCES = \
UIKit/UICollectionViewLayoutAttributes.cs \
UIKit/UICollectionViewTransitionLayout.cs \
UIKit/UIColor.cs \
UIKit/UIContentSizeCategory.cs \
UIKit/UIControl.cs \
UIKit/UIDevice.cs \
UIKit/UIDocumentInteractionController.cs \

Просмотреть файл

@ -0,0 +1,51 @@
//
// Unit tests for UIContentSizeCategory
//
// Authors:
// Vincent Dondain <vidondai@microsoft.com>
//
// Copyright 2017 Microsoft. All rights reserved.
//
#if !__WATCHOS__
using System;
using Foundation;
using NUnit.Framework;
using UIKit;
namespace MonoTouchFixtures.UIKit {
[TestFixture]
[Preserve (AllMembers = true)]
public class UIContentSizeCategoryTest {
[SetUp]
public void Setup ()
{
TestRuntime.AssertXcodeVersion (9, 0);
}
[Test]
public void IsAccessibilityCategory ()
{
var isAccessible = UIContentSizeCategory.AccessibilityMedium.IsAccessibilityCategory ();
Assert.IsTrue (isAccessible, "AccessibilityMedium");
isAccessible = UIContentSizeCategory.Medium.IsAccessibilityCategory ();
Assert.IsFalse (isAccessible, "Medium");
}
[Test]
public void Compare ()
{
var small = UIContentSizeCategory.Small;
var large = UIContentSizeCategory.Large;
Assert.True (UIContentSizeCategoryExtensions.Compare (small, large) == NSComparisonResult.Ascending, "small < large");
Assert.Throws<ArgumentException> (() => UIContentSizeCategoryExtensions.Compare ((UIContentSizeCategory)31415, large));
Assert.Throws<ArgumentException> (() => UIContentSizeCategoryExtensions.Compare (small, (UIContentSizeCategory)271828));
Assert.Throws<ArgumentException> (() => ((UIContentSizeCategory)1234).IsAccessibilityCategory ());
}
}
}
#endif // !__WATCHOS__

Просмотреть файл

@ -700,6 +700,7 @@
<Compile Include="Metal\MTLTileRenderPipelineDescriptor.cs" />
<Compile Include="Metal\MTLTileRenderPipelineColorAttachmentDescriptorTests.cs" />
<Compile Include="AVFoundation\AVDepthDataTests.cs" />
<Compile Include="UIKit\UIContentSizeCategoryTest.cs" />
</ItemGroup>
<Import Project="$(MSBuildExtensionsPath)\Xamarin\iOS\Xamarin.iOS.CSharp.targets" />
<ItemGroup>