| /******************************************************************************* |
| * Copyright (c) 2000, 2015 IBM Corporation 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: |
| * IBM Corporation - initial API and implementation |
| * Alexander Kurtakov <akurtako@redhat.com> - Bug 459343 |
| *******************************************************************************/ |
| package org.eclipse.core.tests.internal.resources; |
| |
| import java.io.*; |
| import java.util.Map; |
| import junit.framework.Test; |
| import junit.framework.TestSuite; |
| import org.eclipse.core.internal.resources.ResourceInfo; |
| import org.eclipse.core.runtime.QualifiedName; |
| import org.eclipse.core.tests.resources.ResourceTest; |
| |
| public class ResourceInfoTest extends ResourceTest { |
| /** |
| * ResourceInfoTest constructor comment. |
| */ |
| public ResourceInfoTest() { |
| super(); |
| } |
| |
| /** |
| * ResourceInfoTest constructor comment. |
| * @param name java.lang.String |
| */ |
| public ResourceInfoTest(String name) { |
| super(name); |
| } |
| |
| public static Test suite() { |
| // all test methods are named "test..." |
| return new TestSuite(ResourceInfoTest.class); |
| // TestSuite suite = new TestSuite(); |
| // suite.addTest(new ResourceInfoTest("testSimple")); |
| // return suite; |
| } |
| |
| static public void assertEquals(String message, byte[] expected, byte[] actual) { |
| if (expected == null && actual == null) { |
| return; |
| } |
| if (expected == null || actual == null) { |
| assertTrue(message, false); |
| } |
| assertEquals(message, expected.length, actual.length); |
| for (int i = 0; i < expected.length; i++) { |
| assertEquals(message, expected[i], actual[i]); |
| } |
| } |
| |
| static public void assertEquals(String message, Map<?, ?> expected, Map<?, ?> actual) { |
| if (expected == null && actual == null) { |
| return; |
| } |
| if (expected == null || actual == null) { |
| assertTrue(message, false); |
| } |
| assertEquals(message, expected.size(), actual.size()); |
| for (Map.Entry<?, ?> entry : expected.entrySet()) { |
| Object key = entry.getKey(); |
| assertTrue(message, actual.containsKey(key)); |
| Object expectedValue = entry.getValue(); |
| Object actualValue = actual.get(key); |
| if (expectedValue instanceof byte[] && actualValue instanceof byte[]) { |
| assertEquals(message, (byte[]) expectedValue, (byte[]) actualValue); |
| } else { |
| assertEquals(message, expectedValue, actualValue); |
| } |
| } |
| } |
| |
| static public void assertEquals(String message, ResourceInfo expected, ResourceInfo actual) { |
| if (expected == null && actual == null) { |
| return; |
| } |
| if (expected == null || actual == null) { |
| assertTrue(message, false); |
| } |
| boolean different = false; |
| different &= expected.getFlags() == actual.getFlags(); |
| different &= expected.getContentId() == actual.getContentId(); |
| different &= expected.getModificationStamp() == actual.getModificationStamp(); |
| different &= expected.getNodeId() == actual.getNodeId(); |
| different &= expected.getLocalSyncInfo() == actual.getLocalSyncInfo(); |
| // TODO sync info isn't serialized by this class so don't expect it to be loaded |
| // assertEquals(message, expected.getSyncInfo(false), actual.getSyncInfo(false)); |
| different &= expected.getMarkerGenerationCount() == actual.getMarkerGenerationCount(); |
| if (different) { |
| assertTrue(message, false); |
| } |
| } |
| |
| public void testSerialization() { |
| ByteArrayInputStream input = null; |
| ByteArrayOutputStream output = null; |
| ResourceInfo info = new ResourceInfo(); |
| ResourceInfo newInfo = new ResourceInfo(); |
| |
| // write out an empty info |
| try { |
| output = new ByteArrayOutputStream(); |
| info.writeTo(new DataOutputStream(output)); |
| } catch (IOException e) { |
| fail("1.0", e); |
| } |
| try { |
| input = new ByteArrayInputStream(output.toByteArray()); |
| newInfo.readFrom(0, new DataInputStream(input)); |
| } catch (IOException e) { |
| fail("1.1", e); |
| } |
| assertEquals("1.2", info, newInfo); |
| |
| // write and info with syncinfo set |
| info = new ResourceInfo(); |
| // set no bytes |
| QualifiedName qname = new QualifiedName("org.eclipse.core.tests", "myTest1"); |
| byte[] bytes = new byte[0]; |
| info.setSyncInfo(qname, bytes); |
| // set some real bytes |
| qname = new QualifiedName("org.eclipse.core.tests", "myTest2"); |
| bytes = new byte[] {0, 1, 2, 3, 4, 5}; |
| info.setSyncInfo(qname, bytes); |
| try { |
| output = new ByteArrayOutputStream(); |
| info.writeTo(new DataOutputStream(output)); |
| } catch (IOException e) { |
| fail("2.0", e); |
| } |
| try { |
| newInfo = new ResourceInfo(); |
| input = new ByteArrayInputStream(output.toByteArray()); |
| newInfo.readFrom(0, new DataInputStream(input)); |
| } catch (IOException e) { |
| fail("2.1", e); |
| } |
| assertEquals("2.2", info, newInfo); |
| } |
| } |