112 строки
3.1 KiB
C#
112 строки
3.1 KiB
C#
//
|
|
// Unit tests for EKEventStore
|
|
//
|
|
// Authors:
|
|
// Marek Safar (marek.safar@gmail.com)
|
|
//
|
|
// Copyright 2012 Xamarin Inc. All rights reserved.
|
|
//
|
|
|
|
#if !__TVOS__
|
|
|
|
using System;
|
|
#if XAMCORE_2_0
|
|
using Foundation;
|
|
using ObjCRuntime;
|
|
using EventKit;
|
|
#else
|
|
using MonoTouch.EventKit;
|
|
using MonoTouch.Foundation;
|
|
using MonoTouch.ObjCRuntime;
|
|
#endif
|
|
using NUnit.Framework;
|
|
using System.Threading;
|
|
using System.Linq;
|
|
|
|
namespace MonoTouchFixtures.EventKit {
|
|
|
|
[TestFixture]
|
|
[Preserve (AllMembers = true)]
|
|
public class EventStoreTest
|
|
{
|
|
[Test]
|
|
[Ignore ("fail on a cleaned iOS 6 simulator and (differently) on devices")]
|
|
public void DefaultCalendar ()
|
|
{
|
|
var store = new EKEventStore ();
|
|
Assert.AreEqual ("Calendar", store.DefaultCalendarForNewEvents.Title, "DefaultCalendarForNewEvents");
|
|
Assert.IsNull (store.DefaultCalendarForNewReminders, "DefaultCalendarForNewReminders");
|
|
Assert.IsNotNull (store.Calendars, "Calendars");
|
|
Assert.IsNotNull (store.Sources, "Sources");
|
|
}
|
|
|
|
#if false
|
|
// The EKEventStore constructor is no longer availble on iOS 6 Beta 4
|
|
|
|
[Test]
|
|
[Ignore ("fail on a cleaned iOS 6 simulator and (differently) on devices")]
|
|
public void DefaultReminder ()
|
|
{
|
|
var store = new EKEventStore (EKEntityMask.Reminder);
|
|
Assert.AreEqual ("Reminders", store.DefaultCalendarForNewReminders.Title, "DefaultCalendarForNewReminders");
|
|
Assert.IsNull (store.DefaultCalendarForNewEvents, "DefaultCalendarForNewEvents");
|
|
Assert.IsNotNull (store.Calendars, "Calendars");
|
|
Assert.IsNotNull (store.Sources, "Sources");
|
|
}
|
|
|
|
[Test]
|
|
[Ignore ("fail on a cleaned iOS 6 simulator and (differently) on devices")]
|
|
public void GetCalendars ()
|
|
{
|
|
var store = new EKEventStore (EKEntityMask.Reminder);
|
|
var calendars = store.GetCalendars (EKEntityType.Reminder);
|
|
Assert.AreEqual ("Reminders", calendars[0].Title, "#1");
|
|
|
|
calendars = store.GetCalendars (EKEntityType.Event);
|
|
Assert.AreEqual (0, calendars.Length, "#2");
|
|
}
|
|
|
|
[Test]
|
|
public void Predicates()
|
|
{
|
|
if (Runtime.Arch == Arch.DEVICE)
|
|
Assert.Inconclusive ("defaults are different on devices");
|
|
|
|
var store = new EKEventStore (EKEntityMask.Reminder);
|
|
var rem = EKReminder.Create (store);
|
|
rem.Calendar = store.DefaultCalendarForNewReminders;
|
|
|
|
NSError error;
|
|
Assert.IsTrue (store.SaveReminder (rem, true, out error), "SaveReminder");
|
|
|
|
var predicate = store.PredicateForIncompleteReminders (null, null, new [] { rem.Calendar });
|
|
var mre = new ManualResetEvent (false);
|
|
bool found = false;
|
|
store.FetchReminders (predicate, l => {
|
|
found = l.Any (ll => ll.ClassHandle == rem.ClassHandle);
|
|
mre.Set ();
|
|
});
|
|
|
|
Assert.IsTrue (mre.WaitOne (3000), "#1");
|
|
Assert.IsTrue (found, "#2");
|
|
|
|
mre.Reset ();
|
|
predicate = store.PredicateForReminders (null);
|
|
|
|
store.FetchReminders (predicate, l => mre.Set ());
|
|
Assert.IsTrue (mre.WaitOne (3000), "#10");
|
|
|
|
mre.Reset ();
|
|
predicate = store.PredicateForCompleteReminders (null, null, null);
|
|
|
|
store.FetchReminders (predicate, l => mre.Set ());
|
|
Assert.IsTrue (mre.WaitOne (3000), "#20");
|
|
|
|
Assert.IsTrue (store.RemoveReminder (rem, true, out error), "RemoveReminder");
|
|
}
|
|
#endif
|
|
}
|
|
}
|
|
|
|
#endif // !__TVOS__
|