xamarin-macios/tests/monotouch-test/EventKit/CalendarTest.cs

158 строки
4.6 KiB
C#

//
// Unit tests for EKCalendar
//
// Authors:
// Sebastien Pouliot <sebastien@xamarin.com>
// Marek Safar (marek.safar@gmail.com)
//
// Copyright 2012 Xamarin Inc. All rights reserved.
//
#if !__TVOS__
using System;
using Foundation;
using CoreGraphics;
using ObjCRuntime;
using EventKit;
using NUnit.Framework;
namespace MonoTouchFixtures.EventKit {
[TestFixture]
[Preserve (AllMembers = true)]
public class EventKitCalendarTest {
[SetUp]
public void Setup ()
{
TestRuntime.AssertSystemVersion (PlatformName.MacOSX, 10, 8, throwIfOtherPlatform: false);
}
void RequestPermission ()
{
#if __MACOS__ || __MACCATALYST__
TestRuntime.RequestEventStorePermission (EKEntityType.Event, true);
TestRuntime.RequestEventStorePermission (EKEntityType.Reminder, true);
#endif
}
// note: default .ctor disable since it would thrown an objective-c exception telling us to use 'calendarWithEventStore:'
[Test]
public void FromEventStore ()
{
RequestPermission ();
EKEventStore store = new EKEventStore ();
#if MONOMAC || __MACCATALYST__
var c = EKCalendar.Create (EKEntityType.Event, store);
#else
var c = EKCalendar.FromEventStore (store);
#endif
// defaults
#if __WATCHOS__
Assert.False (c.AllowsContentModifications, "AllowsContentModifications");
#else
Assert.True (c.AllowsContentModifications, "AllowsContentModifications");
#endif
Assert.NotNull (c.CalendarIdentifier, "CalendarIdentifier");
#if MONOMAC
Assert.Null (c.Color, "Color");
#else
Assert.Null (c.CGColor, "CGColor");
#endif
if (TestRuntime.CheckXcodeVersion (4, 5)) {
// default value changed for iOS 6.0 beta 1
#if __WATCHOS__
Assert.True (c.Immutable, "Immutable");
#else
Assert.False (c.Immutable, "Immutable");
#endif
// new in 6.0
Assert.AreEqual (EKEntityMask.Event, c.AllowedEntityTypes, "AllowedEntityTypes");
} else {
Assert.True (c.Immutable, "Immutable");
}
Assert.Null (c.Source, "Source");
Assert.False (c.Subscribed, "Subscribed");
#if MONOMAC || __MACCATALYST__
Assert.That (c.SupportedEventAvailabilities, Is.EqualTo (EKCalendarEventAvailability.Busy | EKCalendarEventAvailability.Free), "SupportedEventAvailabilities");
Assert.That (c.Title, Is.EqualTo (string.Empty), "Title");
#else
Assert.That (c.SupportedEventAvailabilities, Is.EqualTo (EKCalendarEventAvailability.None), "SupportedEventAvailabilities");
Assert.Null (c.Title, "Title");
#endif
Assert.That (c.Type, Is.EqualTo (EKCalendarType.Local), "Type");
}
[Test]
public void FromEventStoreWithReminder ()
{
RequestPermission ();
if (!TestRuntime.CheckXcodeVersion (4, 5))
Assert.Inconclusive ("+[EKCalendar calendarForEntityType:eventStore:]: unrecognized selector before 6.0");
var c = EKCalendar.Create (EKEntityType.Reminder, new EKEventStore ());
// defaults
#if __WATCHOS__
Assert.False (c.AllowsContentModifications, "AllowsContentModifications");
#else
Assert.True (c.AllowsContentModifications, "AllowsContentModifications");
#endif
Assert.NotNull (c.CalendarIdentifier, "CalendarIdentifier");
#if MONOMAC
Assert.Null (c.Color, "Color");
#else
Assert.Null (c.CGColor, "CGColor");
#endif
#if __WATCHOS__
Assert.True (c.Immutable, "Immutable");
#else
Assert.False (c.Immutable, "Immutable");
#endif
Assert.Null (c.Source, "Source");
Assert.False (c.Subscribed, "Subscribed");
#if MONOMAC || __MACCATALYST__
Assert.That (c.SupportedEventAvailabilities, Is.EqualTo (EKCalendarEventAvailability.Busy | EKCalendarEventAvailability.Free), "SupportedEventAvailabilities");
Assert.That (c.Title, Is.EqualTo (string.Empty), "Title");
#else
Assert.That (c.SupportedEventAvailabilities, Is.EqualTo (EKCalendarEventAvailability.None), "SupportedEventAvailabilities");
Assert.Null (c.Title, "Title");
#endif
Assert.That (c.Type, Is.EqualTo (EKCalendarType.Local), "Type");
Assert.AreEqual (EKEntityMask.Reminder, c.AllowedEntityTypes, "AllowedEntityTypes");
Assert.IsNotNull (c.CalendarIdentifier, "CalendarIdentifier");
}
[Test]
public void Title ()
{
RequestPermission ();
EKEventStore store = new EKEventStore ();
#if MONOMAC || __MACCATALYST__
var c = EKCalendar.Create (EKEntityType.Event, store);
#else
var c = EKCalendar.FromEventStore (store);
#endif
c.Title = "my title";
Assert.That (c.Title, Is.EqualTo ("my title"), "Title");
}
[Test]
public void FromEventStore_Null ()
{
#if MONOMAC || __MACCATALYST__
Assert.Throws<ArgumentNullException> (() => EKCalendar.Create (EKEntityType.Event, null));
#else
Assert.Throws<ArgumentNullException> (() => EKCalendar.FromEventStore (null));
#endif
}
}
}
#endif // !__TVOS__