1*65c59e02SInna Palant /* 2*65c59e02SInna Palant * Copyright (c) Facebook, Inc. and its affiliates. 3*65c59e02SInna Palant * 4*65c59e02SInna Palant * Licensed under the Apache License, Version 2.0 (the "License"); 5*65c59e02SInna Palant * you may not use this file except in compliance with the License. 6*65c59e02SInna Palant * You may obtain a copy of the License at 7*65c59e02SInna Palant * 8*65c59e02SInna Palant * http://www.apache.org/licenses/LICENSE-2.0 9*65c59e02SInna Palant * 10*65c59e02SInna Palant * Unless required by applicable law or agreed to in writing, software 11*65c59e02SInna Palant * distributed under the License is distributed on an "AS IS" BASIS, 12*65c59e02SInna Palant * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*65c59e02SInna Palant * See the License for the specific language governing permissions and 14*65c59e02SInna Palant * limitations under the License. 15*65c59e02SInna Palant */ 16*65c59e02SInna Palant 17*65c59e02SInna Palant package com.facebook.jni; 18*65c59e02SInna Palant 19*65c59e02SInna Palant import static org.assertj.core.api.Assertions.assertThat; 20*65c59e02SInna Palant 21*65c59e02SInna Palant import java.util.ArrayList; 22*65c59e02SInna Palant import java.util.HashMap; 23*65c59e02SInna Palant import java.util.List; 24*65c59e02SInna Palant import java.util.Map; 25*65c59e02SInna Palant import org.junit.Test; 26*65c59e02SInna Palant 27*65c59e02SInna Palant public class IteratorTests extends BaseFBJniTests { 28*65c59e02SInna Palant @Test testListIterator()29*65c59e02SInna Palant public void testListIterator() { 30*65c59e02SInna Palant List<String> list = new ArrayList<String>(); 31*65c59e02SInna Palant list.add("red"); 32*65c59e02SInna Palant list.add("green"); 33*65c59e02SInna Palant list.add("blue"); 34*65c59e02SInna Palant 35*65c59e02SInna Palant assertThat(nativeTestListIterator(list)).isTrue(); 36*65c59e02SInna Palant } 37*65c59e02SInna Palant nativeTestListIterator(List list)38*65c59e02SInna Palant private static native boolean nativeTestListIterator(List list); 39*65c59e02SInna Palant 40*65c59e02SInna Palant @Test testMapIterator()41*65c59e02SInna Palant public void testMapIterator() { 42*65c59e02SInna Palant Map<String, Integer> map = new HashMap<String, Integer>(); 43*65c59e02SInna Palant map.put("one", 1); 44*65c59e02SInna Palant map.put("two", 2); 45*65c59e02SInna Palant map.put("four", 4); 46*65c59e02SInna Palant 47*65c59e02SInna Palant assertThat(nativeTestMapIterator(map)).isTrue(); 48*65c59e02SInna Palant } 49*65c59e02SInna Palant nativeTestMapIterator(Map map)50*65c59e02SInna Palant private static native boolean nativeTestMapIterator(Map map); 51*65c59e02SInna Palant 52*65c59e02SInna Palant @Test(expected = ClassCastException.class) testMapIterateWrongType()53*65c59e02SInna Palant public void testMapIterateWrongType() { 54*65c59e02SInna Palant Map<String, Number> map = new HashMap<String, Number>(); 55*65c59e02SInna Palant map.put("one", 1); 56*65c59e02SInna Palant map.put("two", 2); 57*65c59e02SInna Palant map.put("pi", 3.14); 58*65c59e02SInna Palant 59*65c59e02SInna Palant assertThat(nativeTestIterateWrongType(map)).isTrue(); 60*65c59e02SInna Palant } 61*65c59e02SInna Palant nativeTestIterateWrongType(Map map)62*65c59e02SInna Palant private static native boolean nativeTestIterateWrongType(Map map); 63*65c59e02SInna Palant 64*65c59e02SInna Palant @Test testMapIterateNullKey()65*65c59e02SInna Palant public void testMapIterateNullKey() { 66*65c59e02SInna Palant Map<String, Integer> map = new HashMap<String, Integer>(); 67*65c59e02SInna Palant map.put("one", 1); 68*65c59e02SInna Palant map.put(null, -99); 69*65c59e02SInna Palant map.put("four", 4); 70*65c59e02SInna Palant 71*65c59e02SInna Palant assertThat(nativeTestIterateNullKey(map)).isTrue(); 72*65c59e02SInna Palant } 73*65c59e02SInna Palant nativeTestIterateNullKey(Map map)74*65c59e02SInna Palant private static native boolean nativeTestIterateNullKey(Map map); 75*65c59e02SInna Palant 76*65c59e02SInna Palant @Test testLargeMapIteration()77*65c59e02SInna Palant public void testLargeMapIteration() { 78*65c59e02SInna Palant Map<String, String> map = new HashMap<String, String>(); 79*65c59e02SInna Palant for (int i = 0; i < 3000; i++) { 80*65c59e02SInna Palant map.put("" + i, "value"); 81*65c59e02SInna Palant } 82*65c59e02SInna Palant assertThat(nativeTestLargeMapIteration(map)).isTrue(); 83*65c59e02SInna Palant } 84*65c59e02SInna Palant nativeTestLargeMapIteration(Map map)85*65c59e02SInna Palant private static native boolean nativeTestLargeMapIteration(Map map); 86*65c59e02SInna Palant } 87