blob: 48b94fc1eb2cc18c0acc5bb79658b06d0513de46 [file] [log] [blame]
/*******************************************************************************
* 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);
}
}