Package net.sf.fmj.test.compat.sun

Source Code of net.sf.fmj.test.compat.sun.BasicCodecTest

package net.sf.fmj.test.compat.sun;

import javax.media.Buffer;
import javax.media.Format;
import javax.media.ResourceUnavailableException;
import javax.media.format.RGBFormat;
import javax.media.format.YUVFormat;

import net.sf.fmj.test.tracing.TracingBuffer;
import net.sf.fmj.test.tracing.TracingFormat;

import junit.framework.TestCase;

import com.sun.media.BasicCodec;

/**
*
* @author Ken Larson
*
*/
public class BasicCodecTest extends TestCase
{

  public void testIOFormats1()
  {
    final MyBasicCodec c = new MyBasicCodec();
    assertEquals(c.doGetInputFormat(), null);
    assertEquals(c.doGetOutputFormat(), null);
    {
      final Format f1 = new Format("abc");
      final Format f1res = c.setInputFormat(f1);
      assertTrue(f1 == f1res);
      assertTrue(c.doGetInputFormat() == f1);
      assertEquals(c.doGetOutputFormat(), null);   
      final Format f2 = new Format("xyz");
      final Format f2res = c.setOutputFormat(f2);
      assertTrue(f2 == f2res);
      assertTrue(c.doGetInputFormat() == f1);
      assertTrue(c.doGetOutputFormat() == f2);   
    }
   
   
   
  }
 
  public void testIOFormats2()
  {
    final MyBasicCodec c = new MyBasicCodec();
   
    // TODO: any checking against supported i/o formats?
    // TODO: any checking against getSupportedOutputFormats - does not appear to call.
   
    assertTrue(c.getSupportedInputFormats().length == 0);
    assertTrue(c.getOutputFormats().length == 0);
   
    final Format[] fs = new Format[]{
        new Format("abcd")
    };
    c.setOutputFormats(fs);
    assertTrue(c.getOutputFormats() == fs);
   
    {
      final Format f1 = new Format("abc");
      final Format f1res = c.setInputFormat(f1);
      assertTrue(f1 == f1res);
      assertTrue(c.doGetInputFormat() == f1);
      assertEquals(c.doGetOutputFormat(), null);   
      final Format f2 = new Format("xyz");
      final Format f2res = c.setOutputFormat(f2);
      assertTrue(f2 == f2res);
      assertTrue(c.doGetInputFormat() == f1);
      assertTrue(c.doGetOutputFormat() == f2);   
    }
   
  }
 
  public void testArrayElementSize()
  {
    final MyBasicCodec c = new MyBasicCodec();
    assertTrue(c.doGetArrayElementSize(byte[].class) == 1);
    assertTrue(c.doGetArrayElementSize(int[].class) == 4);
    assertTrue(c.doGetArrayElementSize(short[].class) == 2);
    assertTrue(c.doGetArrayElementSize(long[].class) == 0);
    assertTrue(c.doGetArrayElementSize(byte.class) == 0);
       
    assertFalse(c.isOpened());
   
  }
 
  public void testOpened() throws ResourceUnavailableException
  {
    final MyBasicCodec c = new MyBasicCodec();
    assertFalse(c.isOpened());
    c.open();
    assertTrue(c.isOpened());
    c.close();
    assertFalse(c.isOpened());
    c.open();
    assertTrue(c.isOpened());
   
    {
      final String s1 = c.dumpToString();
      c.reset();
      final String s2 = c.dumpToString();
      assertEquals(s1, s2);
    }
   
    assertTrue(c.isOpened());
    c.close();
    assertFalse(c.isOpened());
    {
      final String s1 = c.dumpToString();
      c.reset();
      final String s2 = c.dumpToString();
      assertEquals(s1, s2);
    }
    assertFalse(c.isOpened());
   
   
   
  }
 
  public void testReset() throws ResourceUnavailableException
  {
    final MyBasicCodec c = new MyBasicCodec();
   
    // what does reset do?
   
    final Format[] formats = new Format[] {null, new Format("abc")};
    final boolean[] booleanValues = new boolean[] {true, false};
   
    for (int i = 0; i < formats.length; ++i)
    for (int j = 0; j < booleanValues.length; ++j)
    for (int k = 0; k < booleanValues.length; ++k)
    {
      final Format f = formats[i];
      final boolean open = booleanValues[j];
      final boolean eom = booleanValues[k];
   
      {
        final String s1 = c.dumpToString();
        c.reset();
        final String s2 = c.dumpToString();
        assertEquals(s1, s2);
      }
   
      c.setInputFormat(f);

      {
        final String s1 = c.dumpToString();
        c.reset();
        final String s2 = c.dumpToString();
        assertEquals(s1, s2);
      }
   
      if (open)
        c.open();
      else
        c.close();
   
      {
        final String s1 = c.dumpToString();
        c.reset();
        final String s2 = c.dumpToString();
        assertEquals(s1, s2);
      }
     
      c.setPendingEOM(eom);

      {
        final String s1 = c.dumpToString();
        c.reset();
        final String s2 = c.dumpToString();
        assertEquals(s1, s2);
      }
    }


   
   
  }
 

 
  public void testEOM() throws ResourceUnavailableException
  {
    // reset does not affect eom:
    {
      final MyBasicCodec c = new MyBasicCodec();
      assertEquals(c.getPendingEOM(), false);
      c.setPendingEOM(true);
      assertEquals(c.getPendingEOM(), true);
      {
        final String s1 = c.dumpToString();
        c.reset();
        final String s2 = c.dumpToString();
        assertEquals(s1, s2);
      }
      assertEquals(c.getPendingEOM(), true);
    }
   
    {
      final MyBasicCodec c = new MyBasicCodec();
      assertEquals(c.getPendingEOM(), false);
      assertEquals(c.getPendingEOM(), false);
      {
        final String s1 = c.dumpToString();
        c.reset();
        final String s2 = c.dumpToString();
        assertEquals(s1, s2);
      }
      assertEquals(c.getPendingEOM(), false);
    }
   
//     open does not affect eom:
    {
      final MyBasicCodec c = new MyBasicCodec();
      assertEquals(c.getPendingEOM(), false);
      c.setPendingEOM(true);
      assertEquals(c.getPendingEOM(), true);
      c.open();
      assertEquals(c.getPendingEOM(), true);
    }
   
    {
      final MyBasicCodec c = new MyBasicCodec();
      assertEquals(c.getPendingEOM(), false);
      assertEquals(c.getPendingEOM(), false);
      c.open();
      assertEquals(c.getPendingEOM(), false);
    }
   
//     close does not affect eom:
    {
      final MyBasicCodec c = new MyBasicCodec();
      assertEquals(c.getPendingEOM(), false);
      c.setPendingEOM(true);
      assertEquals(c.getPendingEOM(), true);
      c.close();
      assertEquals(c.getPendingEOM(), true);
    }
   
    {
      final MyBasicCodec c = new MyBasicCodec();
      assertEquals(c.getPendingEOM(), false);
      assertEquals(c.getPendingEOM(), false);
      c.close();
      assertEquals(c.getPendingEOM(), false);
    }
   
  }
 
  public void testCheckFormat()
  {
    final MyBasicCodec c = new MyBasicCodec();
    assertEquals(c.doCheckFormat(null), true);
    assertEquals(c.doCheckFormat(new Format(null)), true);
    assertEquals(c.doCheckFormat(new Format("xyz")), true);
   
    c.setInputFormat(new RGBFormat());
    assertEquals(c.doCheckFormat(null), true);
    assertEquals(c.doCheckFormat(new YUVFormat()), true);
 
 
    c.setInputFormats(new Format[]{new RGBFormat()});
    assertEquals(c.doCheckFormat(null), true);
    assertEquals(c.doCheckFormat(new YUVFormat()), true);
   
    c.setOutputFormats(new Format[]{new RGBFormat()});
    assertEquals(c.doCheckFormat(null), true);
    assertEquals(c.doCheckFormat(new YUVFormat()), true);

    c.setOutputFormat(new RGBFormat());
    assertEquals(c.doCheckFormat(null), true);
    assertEquals(c.doCheckFormat(new YUVFormat()), true);
   
    {
      final TracingFormat f = new TracingFormat("zzz");
      c.doCheckFormat(f);
      assertEquals(f.getStringBuffer().toString(), "");
    }

  }
 
  public void testBufferEOM()
  {
    final MyBasicCodec c = new MyBasicCodec();
    try
    {
      c.doIsEOM(null);
      assertFalse(true);
    }
    catch (NullPointerException e)
    {
    }
   
    final Buffer b = new Buffer();
    assertFalse(c.doIsEOM(b));
    assertFalse(c.getPendingEOM());
    b.setEOM(true);
    assertFalse(c.getPendingEOM());
    assertTrue(c.doIsEOM(b));
   
    assertFalse(c.getPendingEOM());
   
    final TracingBuffer b2 = new TracingBuffer();
    assertEquals(b2.getStringBuffer().toString(), "");
   
    assertFalse(c.doIsEOM(b2));
    assertEquals(b2.getStringBuffer().toString(), "isEOM\n");
   
    c.setOutputFormat(new Format("zzz"));
    c.doPropagateEOM(b2);
    assertEquals(b2.getStringBuffer().toString(), "isEOM\nsetFormat(zzz)\nsetLength(0)\nsetOffset(0)\nsetEOM\n");
   
    //System.out.println(b2.getStringBuffer().toString());
    assertTrue(c.doIsEOM(b2));
    assertEquals(b2.getStringBuffer().toString(), "isEOM\nsetFormat(zzz)\nsetLength(0)\nsetOffset(0)\nsetEOM\nisEOM\n");
   
    assertFalse(c.getPendingEOM());
   
    assertEquals(b2.getStringBuffer().toString(), "isEOM\nsetFormat(zzz)\nsetLength(0)\nsetOffset(0)\nsetEOM\nisEOM\n");
    //System.out.println(b2.getStringBuffer().toString());
   
  }
 
  public void testUpdateOutput()
  {
    {
      final MyBasicCodec c = new MyBasicCodec();
      final TracingBuffer b = new TracingBuffer();
      final Format f = new Format("abc");
      c.doUpdateOutput(b, f, 10, 20);
      assertEquals(b.getLength(), 10);
      assertEquals(b.getOffset(), 20);
      assertTrue(b.getFormat() == f);
      //System.out.println(b.getStringBuffer().toString());
      assertEquals(b.getStringBuffer().toString(),
          "setFormat(abc)\n" +
          "setLength(10)\n" +
          "setOffset(20)\n" +
          "getLength\n" +
          "getOffset\n" +
          "getFormat\n");
    }
   
    {
      final MyBasicCodec c = new MyBasicCodec();
      final TracingBuffer b = new TracingBuffer()
      {

        //@Override
        public int getLength()
        {
          super.getLength();
          return 1;
        }
       
      };
      final TracingFormat f = new TracingFormat("abc");
      assertEquals(f.getStringBuffer().toString(), "");
      c.doUpdateOutput(b, f, 10, 20);
      assertEquals(f.getStringBuffer().toString(), "getEncoding\n");
     
      assertEquals(b.getLength(), 1);
      assertEquals(b.getOffset(), 20);
      assertTrue(b.getFormat() == f);
      //System.out.println(b.getStringBuffer().toString());
      assertEquals(b.getStringBuffer().toString(),
          "setFormat(abc)\n" +
          "setLength(10)\n" +
          "setOffset(20)\n" +
          "getLength\n" +
          "getOffset\n" +
          "getFormat\n");
     
    }
   
    {
      final MyBasicCodec c = new MyBasicCodec();
      final TracingBuffer b = new TracingBuffer();
      final TracingFormat f = new TracingFormat(null);
      c.doUpdateOutput(b, f, 10, 20);
      assertEquals(f.getStringBuffer().toString(), "getEncoding\n");
      assertEquals(b.getLength(), 10);
      assertEquals(b.getOffset(), 20);
      assertTrue(b.getFormat() == f);
      //System.out.println(b.getStringBuffer().toString());
      assertEquals(b.getStringBuffer().toString(),
          "setFormat(null)\n" +
          "setLength(10)\n" +
          "setOffset(20)\n" +
          "getLength\n" +
          "getOffset\n" +
          "getFormat\n");
      assertEquals(f.getStringBuffer().toString(), "getEncoding\n");
      f.toString();
      assertEquals(f.getStringBuffer().toString(), "getEncoding\ngetEncoding\n");
    }

    {
      final MyBasicCodec c = new MyBasicCodec();
      final TracingBuffer b = new TracingBuffer();
      final Format f = null;
      c.doUpdateOutput(b, f, 0, 0);
      assertEquals(b.getLength(), 0);
      assertEquals(b.getOffset(), 0);
      assertTrue(b.getFormat() == f);
      //System.out.println(b.getStringBuffer().toString());
      assertEquals(b.getStringBuffer().toString(),
          "setFormat(null)\n" +
          "setLength(0)\n" +
          "setOffset(0)\n" +
          "getLength\n" +
          "getOffset\n" +
          "getFormat\n");
    }
   
  }
 
  public void testCheckInputBuffer()
  {
    {
      final MyBasicCodec c = new MyBasicCodec();
      final Buffer b = new Buffer();
     
      assertEquals(c.doCheckInputBuffer(b), false);
    }
   
    {
      final StringBuffer sb = new StringBuffer();
      final MyBasicCodec c = new MyBasicCodec(){

        //@Override
        protected boolean checkFormat(Format arg0)
        {
          sb.append("checkFormat");
          return super.checkFormat(arg0);
         
        }
       
      };
      final Buffer b = new Buffer();
      final Format f = new Format("abc");
      b.setFormat(f);
     
      assertEquals(c.doCheckInputBuffer(b), true);
      assertEquals(sb.toString(), "checkFormat")// checkInputBuffer calls checkFormat
     
      assertEquals(c.doCheckFormat(null), true);
      assertEquals(c.doCheckInputBuffer(new Buffer()), false);
     
    }
   
    {
      final MyBasicCodec c = new MyBasicCodec();
      final Buffer b = new Buffer();
      final Format f = new YUVFormat();
      b.setFormat(f);
      c.setInputFormat(new RGBFormat());
     
      assertEquals(c.doCheckInputBuffer(b), true);
    }
   
    {
      final MyBasicCodec c = new MyBasicCodec();
      final Buffer b = new Buffer();
      final Format f = new Format(null);
      b.setFormat(f);
      b.setLength(-1);
      b.setOffset(-1);
      b.setEOM(true);
      b.setDuration(-1L);
     
      c.setInputFormat(new RGBFormat());
     
      assertEquals(c.doCheckInputBuffer(b), true);
    }
 
    {
      final MyBasicCodec c = new MyBasicCodec();
      final TracingBuffer b = new TracingBuffer();
      final Format f = new Format(null);
      b.setFormat(f);
      b.setEOM(true);
     
      assertEquals(c.doCheckFormat(f), true);
      //System.out.println(b.getStringBuffer().toString());
      assertEquals(b.getStringBuffer().toString(), "setFormat(null)\nsetEOM\n");
     
    }
   
    {
      final MyBasicCodec c = new MyBasicCodec();
      final TracingBuffer b = new TracingBuffer();
      final Format f = new Format(null);
      b.setFormat(f);
      b.setEOM(true);
     
      assertEquals(c.doCheckInputBuffer(b), true);
      assertEquals(b.getStringBuffer().toString(), "setFormat(null)\nsetEOM\nisEOM\n");
     
    }
   
    {
      final MyBasicCodec c = new MyBasicCodec();
      final TracingBuffer b = new TracingBuffer();
      final Format f = null;
      b.setFormat(f);
      b.setEOM(true);
     
      assertEquals(c.doCheckInputBuffer(b), true);
      //System.out.println(b.getStringBuffer().toString());
      assertEquals(b.getStringBuffer().toString(), "setFormat(null)\nsetEOM\nisEOM\n");
     
    }
   
    {
      final MyBasicCodec c = new MyBasicCodec();
      final TracingBuffer b = new TracingBuffer();
      final Format f = new Format(null);
      b.setFormat(f);
     
      assertEquals(b.getStringBuffer().toString(), "setFormat(null)\n");
      assertEquals(c.doCheckInputBuffer(b), true);
      assertEquals(b.getStringBuffer().toString(), "setFormat(null)\nisEOM\ngetFormat\ngetFormat\n");
     
    }
   
    {
      final MyBasicCodec c = new MyBasicCodec();
      final TracingBuffer b = new TracingBuffer();
      final TracingFormat f = new TracingFormat(null);
      b.setFormat(f);
     
      assertEquals(c.doCheckInputBuffer(b), true);
      assertEquals(b.getStringBuffer().toString(), "setFormat(null)\nisEOM\ngetFormat\ngetFormat\n");
     
     
    }

   
    {
      final MyBasicCodec c = new MyBasicCodec();
      final TracingBuffer b = new TracingBuffer();
      final Format f = new Format("xyz");
      b.setFormat(f);
     
      assertEquals(c.doCheckInputBuffer(b), true);
      assertEquals(b.getStringBuffer().toString(), "setFormat(xyz)\nisEOM\ngetFormat\ngetFormat\n");
    }
   
    {
      final MyBasicCodec c = new MyBasicCodec();
      final TracingBuffer b = new TracingBuffer();
      b.setEOM(true);
      final Format f = new Format("xyz");
      b.setFormat(f);
     
      assertEquals(c.doCheckInputBuffer(b), true);
      //System.out.println(b.getStringBuffer().toString());
      assertEquals(b.getStringBuffer().toString(), "setEOM\nsetFormat(xyz)\nisEOM\n");
    }
   
   
  }
 
  class MyBasicCodec extends BasicCodec
  {

    //@Override
    public Format[] getSupportedOutputFormats(Format arg0)
    {
      throw new RuntimeException();
    }

    //@Override
    public int process(Buffer arg0, Buffer arg1)
    {
      throw new RuntimeException();
    }

    //@Override
    public String getName()
    {
      return null;
    }
   
    public Format doGetInputFormat()
    {  return getInputFormat();
    }
    public Format doGetOutputFormat()
    {  return getOutputFormat();
   
   
    public int doGetArrayElementSize(Class type)
    {
      return getArrayElementSize(type);
    }
   
    public boolean isOpened()
    {  return opened;
    }
   
    public Format[] getOutputFormats()
    {  return outputFormats;
    }
   
    public void setOutputFormats(Format[] value)
    {  outputFormats = value;
    }
   
   
    public void setInputFormats(Format[] value)
    {  inputFormats = value;
    }
   
    public boolean getPendingEOM()
    {  return pendingEOM;
    }
   
    public void setPendingEOM(boolean value)
    {  pendingEOM = value;
    }
   
    public boolean doCheckFormat(Format f)
    {
      return checkFormat(f);
    }
   
    public boolean doIsEOM(Buffer inputBuffer)
    {
      return isEOM(inputBuffer);
    }
   
    public void doPropagateEOM(Buffer b)
    {
      propagateEOM(b);
    }
   
    public void doUpdateOutput(Buffer outputBuffer, Format format, int length, int offset)
    {  updateOutput(outputBuffer, format, length, offset);
    }
   
    public boolean doCheckInputBuffer(Buffer inputBuffer)
    {  return checkInputBuffer(inputBuffer);
    }
   
    public String dumpToString()
    {
      final StringBuffer b = new StringBuffer();
      b.append("inputFormat=" + inputFormat + "\n");
      b.append("outputFormat=" + outputFormat + "\n");
      b.append("opened=" + opened + "\n");
      b.append("inputFormats="+inputFormats + "\n");
      if (inputFormats != null)
      {
        for (int i = 0; i < inputFormats.length; ++i)
          b.append("\t" + inputFormats[i]);
      }
     
      b.append("outputFormats=" + outputFormats + "\n");
      if (outputFormats != null)
      {
        for (int i = 0; i < outputFormats.length; ++i)
          b.append("\t" + outputFormats[i]);
      }
     
      b.append("pendingEOM=" + pendingEOM + "\n");

      return b.toString();
    }

  }
}
TOP

Related Classes of net.sf.fmj.test.compat.sun.BasicCodecTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.