Package com.sun.pdfview.function.postscript

Source Code of com.sun.pdfview.function.postscript.PostScriptOPTest

package com.sun.pdfview.function.postscript;

import static org.junit.Assert.*;

import java.util.Iterator;
import java.util.List;
import java.util.Stack;

import org.junit.Test;

import com.sun.pdfview.function.postscript.operation.OperationSet;
import com.sun.pdfview.function.postscript.operation.PostScriptOperation;

public class PostScriptOPTest {

  public static Stack<Object> parse(String text) {
    Stack<Object> stack = new Stack<Object>();
    PostScriptParser p = new PostScriptParser();
    List<String> tokens = p.parse(text);
    for (Iterator<String> iterator = tokens.iterator(); iterator.hasNext(); ) {
      String token = iterator.next();
      PostScriptOperation op = OperationSet.getInstance().getOperation(token);
      op.eval(stack);
    }
    return stack;
  }

 
  @Test
  public void testRoll() {
    Stack<Object> stack = parse("1 2 3 4 5 5 -2 roll");
    assertEquals(2, ((Number)stack.pop()).intValue());
    assertEquals(1, ((Number)stack.pop()).intValue());
    assertEquals(5, ((Number)stack.pop()).intValue());
    assertEquals(4, ((Number)stack.pop()).intValue());
    assertEquals(3, ((Number)stack.pop()).intValue());
    assertTrue(stack.isEmpty());
   
    stack = parse("1 2 3 4 5 5 2 roll");
    assertEquals(3, ((Number)stack.pop()).intValue());
    assertEquals(2, ((Number)stack.pop()).intValue());
    assertEquals(1, ((Number)stack.pop()).intValue());
    assertEquals(5, ((Number)stack.pop()).intValue());
    assertEquals(4, ((Number)stack.pop()).intValue());
    assertTrue(stack.isEmpty());
   
    stack = parse("1 2 3 4 5 5 7 roll");
    assertEquals(3, ((Number)stack.pop()).intValue());
    assertEquals(2, ((Number)stack.pop()).intValue());
    assertEquals(1, ((Number)stack.pop()).intValue());
    assertEquals(5, ((Number)stack.pop()).intValue());
    assertEquals(4, ((Number)stack.pop()).intValue());
    assertTrue(stack.isEmpty());

    stack = parse("1 2 3 4 5 5 0 roll");
    assertEquals(5, ((Number)stack.pop()).intValue());
    assertEquals(4, ((Number)stack.pop()).intValue());
    assertEquals(3, ((Number)stack.pop()).intValue());
    assertEquals(2, ((Number)stack.pop()).intValue());
    assertEquals(1, ((Number)stack.pop()).intValue());
    assertTrue(stack.isEmpty());
  }
 
  @Test
  public void testIndex() {
    Stack<Object> stack = parse("1 0 index");
    assertEquals(1, ((Number)stack.pop()).intValue());
    assertEquals(1, ((Number)stack.pop()).intValue());
    assertTrue(stack.isEmpty());
   
    stack = parse("1 2 3 1 index");
    assertEquals(2, ((Number)stack.pop()).intValue());
    assertEquals(3, ((Number)stack.pop()).intValue());
  }
 
  @Test
  public void testExch() {
    Stack<Object> stack = parse("1 0 exch");
    assertEquals(1, ((Number)stack.pop()).intValue());
    assertEquals(0, ((Number)stack.pop()).intValue());
    assertTrue(stack.isEmpty());
   
    stack = parse("1 3.1 0 exch");
    assertEquals(3.1, ((Number)stack.pop()).doubleValue(), 1e-16);
    assertEquals(0, ((Number)stack.pop()).intValue());
    assertEquals(1, ((Number)stack.pop()).intValue());
    assertTrue(stack.isEmpty());
  }

  @Test
  public void testSub() {
    Stack<Object> stack = parse("1 2 sub");
    assertEquals(-1, ((Number)stack.pop()).intValue());
    assertTrue(stack.isEmpty());   

    stack = parse("6.3 2 sub");
    assertEquals(4.3, ((Number)stack.pop()).doubleValue(), 1e-16);
    assertTrue(stack.isEmpty());
  }
 
  @Test
  public void testDup() {
    Stack<Object> stack = parse("1 2 dup");
    assertEquals(2, ((Number)stack.pop()).intValue());
    assertEquals(2, ((Number)stack.pop()).intValue());
    assertEquals(1, ((Number)stack.pop()).intValue());
    assertTrue(stack.isEmpty());   
  }
 
}
TOP

Related Classes of com.sun.pdfview.function.postscript.PostScriptOPTest

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.