| /******************************************************************************* |
| * Copyright (c) 2010-2014 SAP AG 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 |
| * |
| * Contributors: |
| * SAP AG - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.skalli.testutil; |
| |
| import java.util.Arrays; |
| |
| import org.custommonkey.xmlunit.ComparisonController; |
| import org.custommonkey.xmlunit.Difference; |
| import org.custommonkey.xmlunit.DifferenceListener; |
| import org.w3c.dom.Node; |
| |
| public class XMLDiffOptions implements ComparisonController, DifferenceListener { |
| |
| private int[] list = new int[8]; |
| private int size = 0; |
| |
| private boolean identical = true; |
| |
| public XMLDiffOptions(int...options) { |
| append(options); |
| } |
| |
| public XMLDiffOptions(XMLDiffOptions base, int...options) { |
| append(base.list); |
| append(options); |
| } |
| |
| public void append(int... options) { |
| if (options != null && options.length > 0) { |
| if (size + options.length > list.length) { |
| int[] grown = new int[list.length + options.length]; |
| System.arraycopy(list, 0, grown, 0, list.length); |
| list = grown; |
| } |
| System.arraycopy(list, size, options, 0, options.length); |
| size += options.length; |
| Arrays.sort(list); |
| } |
| } |
| |
| @Override |
| public int differenceFound(Difference difference) { |
| int result = RETURN_IGNORE_DIFFERENCE_NODES_IDENTICAL; |
| if (Arrays.binarySearch(list, difference.getId()) < 0) { |
| identical = false; |
| result = RETURN_ACCEPT_DIFFERENCE; |
| } |
| return result; |
| } |
| |
| @Override |
| public void skippedComparison(Node control, Node test) { |
| } |
| |
| @Override |
| public boolean haltComparison(Difference afterDifference) { |
| return !identical; |
| } |
| |
| public boolean identical() { |
| return identical; |
| } |
| } |