/*
* Copyright (c) 2016 Cisco Systems, Inc. and others. All rights reserved.
*
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/epl-v10.html
*/
package org.opendaylight.yangtools.yang.parser.spi.meta;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertSame;
import static org.junit.Assert.assertTrue;
import org.junit.Test;
public class CopyHistoryTest {
@Test
public void testSingleton() {
final CopyHistory original = CopyHistory.original();
assertEquals(CopyType.ORIGINAL, original.getLastOperation());
assertTrue(original.contains(CopyType.ORIGINAL));
assertFalse(original.contains(CopyType.ADDED_BY_USES));
assertFalse(original.contains(CopyType.ADDED_BY_AUGMENTATION));
assertFalse(original.contains(CopyType.ADDED_BY_USES_AUGMENTATION));
assertSame(original, CopyHistory.original());
}
@Test
public void testAppend() {
final CopyHistory original = CopyHistory.original();
assertSame(original, original.append(CopyType.ORIGINAL, original));
final CopyHistory originalUA = original.append(CopyType.ADDED_BY_USES_AUGMENTATION, original);
assertEquals(CopyType.ADDED_BY_USES_AUGMENTATION, originalUA.getLastOperation());
assertTrue(originalUA.contains(CopyType.ORIGINAL));
assertFalse(originalUA.contains(CopyType.ADDED_BY_USES));
assertFalse(originalUA.contains(CopyType.ADDED_BY_AUGMENTATION));
assertTrue(originalUA.contains(CopyType.ADDED_BY_USES_AUGMENTATION));
assertSame(originalUA, original.append(CopyType.ADDED_BY_USES_AUGMENTATION, original));
assertSame(originalUA, originalUA.append(CopyType.ADDED_BY_USES_AUGMENTATION, original));
final CopyHistory originalU = original.append(CopyType.ADDED_BY_USES, original);
assertEquals(CopyType.ADDED_BY_USES, originalU.getLastOperation());
assertTrue(originalU.contains(CopyType.ORIGINAL));
assertTrue(originalU.contains(CopyType.ADDED_BY_USES));
assertFalse(originalU.contains(CopyType.ADDED_BY_AUGMENTATION));
assertFalse(originalU.contains(CopyType.ADDED_BY_USES_AUGMENTATION));
final CopyHistory uaU = originalUA.append(CopyType.ADDED_BY_USES, original);
assertEquals(CopyType.ADDED_BY_USES, uaU.getLastOperation());
assertTrue(uaU.contains(CopyType.ORIGINAL));
assertTrue(uaU.contains(CopyType.ADDED_BY_USES));
assertFalse(uaU.contains(CopyType.ADDED_BY_AUGMENTATION));
assertTrue(uaU.contains(CopyType.ADDED_BY_USES_AUGMENTATION));
assertSame(uaU, originalUA.append(CopyType.ADDED_BY_USES, original));
final CopyHistory res = originalUA.append(CopyType.ADDED_BY_AUGMENTATION, originalU);
assertEquals(CopyType.ADDED_BY_AUGMENTATION, res.getLastOperation());
assertTrue(res.contains(CopyType.ORIGINAL));
assertTrue(res.contains(CopyType.ADDED_BY_USES));
assertTrue(res.contains(CopyType.ADDED_BY_AUGMENTATION));
assertTrue(res.contains(CopyType.ADDED_BY_USES_AUGMENTATION));
}
}