/*
* This is public domain software - that is, you can do whatever you want
* with it, and include it software that is licensed under the GNU or the
* BSD license, or whatever other licence you choose, including proprietary
* closed source licenses. I do ask that you leave this header in tact.
*
* If you make modifications to this code that you think would benefit the
* wider community, please send me a copy and I'll post it on my site.
*
* If you make use of this code, I'd appreciate hearing about it.
* metadata_extractor [at] drewnoakes [dot] com
* Latest version of this software kept at
* http://drewnoakes.com/
*
* Created by dnoakes on 29-Nov-2002 08:40:07 using IntelliJ IDEA.
*/
package com.drew.metadata.test;
import com.drew.metadata.Directory;
import com.drew.metadata.Metadata;
import junit.framework.TestCase;
import java.util.GregorianCalendar;
/**
*
*/
public class DirectoryTest extends TestCase
{
public DirectoryTest(String s)
{
super(s);
}
public void testSetAndGetInt() throws Exception
{
Metadata metadata = new Metadata();
Directory directory = metadata.getDirectory(MockDirectory.class);
int value = 321;
int tagType = 123;
directory.setInt(tagType, value);
assertEquals(value, directory.getInt(tagType));
assertEquals(Integer.toString(value), directory.getString(tagType));
}
public void testSetAndGetIntArray() throws Exception
{
Metadata metadata = new Metadata();
Directory directory = metadata.getDirectory(MockDirectory.class);
int[] inputValues = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int tagType = 123;
directory.setIntArray(tagType, inputValues);
int[] outputValues = directory.getIntArray(tagType);
assertEquals(inputValues.length, outputValues.length);
for (int i = 0; i < inputValues.length; i++) {
int inputValue = inputValues[i];
int outputValue = outputValues[i];
assertEquals(inputValue, outputValue);
}
assertEquals(inputValues, directory.getIntArray(tagType));
StringBuffer outputString = new StringBuffer();
for (int i = 0; i < inputValues.length; i++) {
int inputValue = inputValues[i];
if (i > 0) {
outputString.append(' ');
}
outputString.append(inputValue);
}
assertEquals(outputString.toString(), directory.getString(tagType));
}
public void testSetStringAndGetDate() throws Exception
{
Metadata metadata = new Metadata();
Directory directory = metadata.getDirectory(MockDirectory.class);
String date1 = "2002:01:30 24:59:59";
String date2 = "2002:01:30 24:59";
String date3 = "2002-01-30 24:59:59";
String date4 = "2002-01-30 24:59";
directory.setString(1, date1);
directory.setString(2, date2);
directory.setString(3, date3);
directory.setString(4, date4);
assertEquals(date1, directory.getString(1));
assertEquals(new GregorianCalendar(2002, GregorianCalendar.JANUARY, 30, 24, 59, 59).getTime(), directory.getDate(1));
assertEquals(new GregorianCalendar(2002, GregorianCalendar.JANUARY, 30, 24, 59, 0).getTime(), directory.getDate(2));
assertEquals(new GregorianCalendar(2002, GregorianCalendar.JANUARY, 30, 24, 59, 59).getTime(), directory.getDate(3));
assertEquals(new GregorianCalendar(2002, GregorianCalendar.JANUARY, 30, 24, 59, 0).getTime(), directory.getDate(4));
}
public void testSetIntArrayGetByteArray() throws Exception
{
Metadata metadata = new Metadata();
Directory directory = metadata.getDirectory(MockDirectory.class);
int[] ints = {1, 2, 3, 4, 5};
directory.setIntArray(1, ints);
assertEquals(ints.length, directory.getByteArray(1).length);
assertEquals(1, directory.getByteArray(1)[0]);
}
public void testSetStringGetInt() throws Exception
{
Metadata metadata = new Metadata();
Directory directory = metadata.getDirectory(MockDirectory.class);
byte[] bytes = { 0x01, 0x02, 0x03 };
directory.setString(1, new String(bytes));
assertEquals(0x010203, directory.getInt(1));
}
}