1 /*
   2  * Copyright (c) 2012, 2013, Oracle and/or its affiliates. All rights reserved.
   3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
   4  *
   5  * This code is free software; you can redistribute it and/or modify it
   6  * under the terms of the GNU General Public License version 2 only, as
   7  * published by the Free Software Foundation.  Oracle designates this
   8  * particular file as subject to the "Classpath" exception as provided
   9  * by Oracle in the LICENSE file that accompanied this code.
  10  *
  11  * This code is distributed in the hope that it will be useful, but WITHOUT
  12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
  13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
  14  * version 2 for more details (a copy is included in the LICENSE file that
  15  * accompanied this code).
  16  *
  17  * You should have received a copy of the GNU General Public License version
  18  * 2 along with this work; if not, write to the Free Software Foundation,
  19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
  20  *
  21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
  22  * or visit www.oracle.com if you need additional information or have any
  23  * questions.
  24  */
  25 package test.com.sun.javafx.collections;
  26 
  27 import com.sun.javafx.collections.NonIterableChange;
  28 import java.util.Arrays;
  29 import javafx.collections.FXCollections;
  30 import javafx.collections.ListChangeListener.Change;
  31 import javafx.collections.ObservableList;
  32 import org.junit.Before;
  33 import org.junit.Test;
  34 import static org.junit.Assert.*;
  35 
  36 public class NonIterableChangeTest {
  37     
  38     ObservableList<String> list;
  39     
  40     @Before
  41     public void setUp() {
  42         list = FXCollections.observableArrayList("a", "b", "c", "d", "e");
  43     }
  44     
  45     @Test
  46     public void testSimpleAdd() {
  47         Change<String> change = new NonIterableChange.SimpleAddChange<String>(0, 1, list);
  48         
  49         assertTrue(change.next());
  50         
  51         assertTrue(change.wasAdded());
  52         assertFalse(change.wasRemoved());
  53         assertFalse(change.wasReplaced());
  54         assertFalse(change.wasUpdated());
  55         assertFalse(change.wasPermutated());
  56         assertEquals(0, change.getFrom());
  57         assertEquals(1, change.getTo());
  58         assertEquals(1, change.getAddedSize());
  59         assertEquals(Arrays.asList("a"), change.getAddedSubList());
  60         assertEquals(0, change.getRemovedSize());
  61         assertEquals(Arrays.asList(), change.getRemoved());
  62         assertNotNull(change.toString());
  63         
  64         assertFalse(change.next());
  65     }
  66     
  67     @Test
  68     public void testSimpleRemove() {
  69         Change<String> change = new NonIterableChange.SimpleRemovedChange<String>(0, 0, "a0", list);
  70         
  71         assertTrue(change.next());
  72         
  73         assertFalse(change.wasAdded());
  74         assertTrue(change.wasRemoved());
  75         assertFalse(change.wasReplaced());
  76         assertFalse(change.wasUpdated());
  77         assertFalse(change.wasPermutated());
  78         assertEquals(0, change.getFrom());
  79         assertEquals(0, change.getTo());
  80         assertEquals(0, change.getAddedSize());
  81         assertEquals(Arrays.asList(), change.getAddedSubList());
  82         assertEquals(1, change.getRemovedSize());
  83         assertEquals(Arrays.asList("a0"), change.getRemoved());
  84         assertNotNull(change.toString());
  85         
  86         assertFalse(change.next());
  87     }
  88     
  89     @Test
  90     public void testSimpleUpdate() {
  91         Change<String> change = new NonIterableChange.SimpleUpdateChange<String>(0, 1, list);
  92         
  93         assertTrue(change.next());
  94         
  95         assertFalse(change.wasAdded());
  96         assertFalse(change.wasRemoved());
  97         assertFalse(change.wasReplaced());
  98         assertTrue(change.wasUpdated());
  99         assertFalse(change.wasPermutated());
 100         assertEquals(0, change.getFrom());
 101         assertEquals(1, change.getTo());
 102         assertEquals(0, change.getAddedSize());
 103         assertEquals(Arrays.asList(), change.getAddedSubList());
 104         assertEquals(0, change.getRemovedSize());
 105         assertEquals(Arrays.asList(), change.getRemoved());
 106         assertNotNull(change.toString());
 107         
 108         assertFalse(change.next());
 109     }
 110     
 111     @Test
 112     public void testSimplePermutation() {
 113         Change<String> change = new NonIterableChange.SimplePermutationChange<String>(0, 2, new int[] {1, 0}, list);
 114         
 115         assertTrue(change.next());
 116         
 117         assertFalse(change.wasAdded());
 118         assertFalse(change.wasRemoved());
 119         assertFalse(change.wasReplaced());
 120         assertFalse(change.wasUpdated());
 121         assertTrue(change.wasPermutated());
 122         assertEquals(0, change.getFrom());
 123         assertEquals(1, change.getPermutation(0));
 124         assertEquals(0, change.getPermutation(1));
 125         assertEquals(2, change.getTo());
 126         assertEquals(0, change.getAddedSize());
 127         assertEquals(Arrays.asList(), change.getAddedSubList());
 128         assertEquals(0, change.getRemovedSize());
 129         assertEquals(Arrays.asList(), change.getRemoved());
 130         assertNotNull(change.toString());
 131         
 132         assertFalse(change.next());
 133     }
 134     
 135 }