// Copyright (c) 2024, the Dart project authors. Please see the AUTHORS file // for details. All rights reserved. Use of this source code is governed by a // BSD-style license that can be found in the LICENSE file. // Objective C support is only available on mac. @TestOn('mac-os') library; import 'package:objective_c/objective_c.dart'; import 'package:test/test.dart'; void main() { group('NSMutableArray', () { test('filled', () { final obj = NSObject(); final array = NSMutableArray.filled(3, obj).asDart(); expect(array.length, 3); expect(array.elementAt(0), obj); expect(array.elementAt(1), obj); expect(array.elementAt(2), obj); expect(array[0], obj); expect(array[1], obj); expect(array[2], obj); }); test('of', () { final obj1 = NSObject(); final obj2 = NSObject(); final obj3 = NSObject(); final obj4 = NSObject(); final obj5 = NSObject(); final expected = [obj1, obj2, obj3, obj4, obj5]; final array = NSMutableArray.of(expected).asDart(); expect(array.length, 5); final actual = []; for (final value in array) { actual.add(value); } expect(actual, expected); }); test('length setter', () { final array = NSMutableArray.filled(3, NSObject()).asDart(); expect(array.length, 3); expect(() => array.length = 4, throwsA(isA())); expect(() => array.length = -1, throwsA(isA())); array.length = 3; expect(array.length, 3); array.length = 2; expect(array.length, 2); array.length = 0; expect(array.length, 0); }); test('element setter', () { final obj1 = NSObject(); final obj2 = NSObject(); final obj3 = NSObject(); final obj4 = NSObject(); final obj5 = NSObject(); final array = NSMutableArray.of([obj1, obj2, obj3]).asDart(); array[1] = obj4; expect(array, [obj1, obj4, obj3]); array[2] = obj5; expect(array, [obj1, obj4, obj5]); }); test('add', () { final obj1 = NSObject(); final obj2 = NSObject(); final obj3 = NSObject(); final obj4 = NSObject(); final obj5 = NSObject(); final array = NSMutableArray().asDart(); expect(array.length, 0); array.add(obj1); array.add(obj2); expect(array.length, 2); expect(array, [obj1, obj2]); array.addAll([obj3, obj4, obj5]); expect(array.length, 5); expect(array, [obj1, obj2, obj3, obj4, obj5]); }); test('List mixin', () { final obj1 = NSObject(); final obj2 = NSObject(); final obj3 = NSObject(); final obj4 = NSObject(); final obj5 = NSObject(); final array = NSMutableArray.of([obj1, obj2, obj3, obj4, obj5]).asDart(); array.setRange(1, 4, [obj5, obj1, obj2]); expect(array, [obj1, obj5, obj1, obj2, obj5]); expect(array.remove(obj2), isTrue); expect(array, [obj1, obj5, obj1, obj5]); expect(array.sublist(1, 3), [obj5, obj1]); }); }); }