public void AddAndContainsObjectTest() { NSArray array = new NSArray(); array.Add(1); Assert.True(array.Contains(1)); Assert.False(array.Contains(2)); }
/// <summary> /// Gets position async with specified parameters /// </summary> /// <param name="timeout">Timeout to wait, Default Infinite</param> /// <param name="token">Cancelation token</param> /// <param name="includeHeading">If you would like to include heading</param> /// <returns>Position</returns> public Task <Position> GetPositionAsync(TimeSpan?timeout, CancellationToken?cancelToken = null, bool includeHeading = false) { var timeoutMilliseconds = timeout.HasValue ? (int)timeout.Value.TotalMilliseconds : Timeout.Infinite; if (timeoutMilliseconds <= 0 && timeoutMilliseconds != Timeout.Infinite) { throw new ArgumentOutOfRangeException(nameof(timeout), "Timeout must be positive or Timeout.Infinite"); } if (!cancelToken.HasValue) { cancelToken = CancellationToken.None; } TaskCompletionSource <Position> tcs; if (!IsListening) { var m = GetManager(); #if __IOS__ // permit background updates if background location mode is enabled if (UIDevice.CurrentDevice.CheckSystemVersion(9, 0)) { NSArray backgroundModes = NSBundle.MainBundle.InfoDictionary[(NSString)"UIBackgroundModes"] as NSArray; m.AllowsBackgroundLocationUpdates = backgroundModes != null && (backgroundModes.Contains((NSString)"Location") || backgroundModes.Contains((NSString)"location")); } // always prevent location update pausing since we're only listening for a single update. if (UIDevice.CurrentDevice.CheckSystemVersion(6, 0)) { m.PausesLocationUpdatesAutomatically = false; } #endif tcs = new TaskCompletionSource <Position>(m); var singleListener = new GeolocationSingleUpdateDelegate(m, DesiredAccuracy, includeHeading, timeoutMilliseconds, cancelToken.Value); m.Delegate = singleListener; m.StartUpdatingLocation(); #if __IOS__ if (includeHeading && SupportsHeading) { m.StartUpdatingHeading(); } #endif return(singleListener.Task); } tcs = new TaskCompletionSource <Position>(); if (position == null) { if (cancelToken != CancellationToken.None) { cancelToken.Value.Register(() => tcs.TrySetCanceled()); } EventHandler <PositionErrorEventArgs> gotError = null; gotError = (s, e) => { tcs.TrySetException(new GeolocationException(e.Error)); PositionError -= gotError; }; PositionError += gotError; EventHandler <PositionEventArgs> gotPosition = null; gotPosition = (s, e) => { tcs.TrySetResult(e.Position); PositionChanged -= gotPosition; }; PositionChanged += gotPosition; } else { tcs.SetResult(position); } return(tcs.Task); }