ValidatingFixParserTest.java :  » Messenger » gfix » org » gfix » parser » Java Open Source

Java Open Source » Messenger » gfix 
gfix » org » gfix » parser » ValidatingFixParserTest.java
package org.gfix.parser;

import org.gfix.parser.FixHandler;
import org.gfix.parser.FixParseFault;
import org.gfix.parser.FixParser;
import org.gfix.parser.ValidatingValidator;
import org.hamcrest.Matchers;
import org.jmock.Expectations;
import org.junit.Test;


public class ValidatingFixParserTest extends BaseParserTest {

  
  @Override
  protected FixParser getParser()
  {
    return new FixParser(new ValidatingValidator.Factory());
  }
  
  
  
  @Test
  @SuppressWarnings("unchecked")
  public void testMessageMustStartWith8Equals() throws Exception
  {
    final FixHandler handler = context.mock(FixHandler.class);      
    runTest(handler, "1=hello", new Expectations()
    {{
        oneOf(handler).error((FixParseFault)with(
            Matchers.allOf(
                Matchers.hasProperty("serverity", Matchers.equalTo(FixParseFault.Serverity.ERROR)),
                Matchers.hasProperty("tag", Matchers.equalTo(1)),
                Matchers.hasProperty("tagContent", Matchers.equalTo("hello"))
            )));
      oneOf(handler).newTag(with(1), with("hello"));
    }});
  }
  
  
  @Test
  @SuppressWarnings("unchecked")
  public void testMessageMustStartWith8ContentsMustBeSupplied() throws Exception
  {
    final FixHandler handler = context.mock(FixHandler.class);      
    runTest(handler, "8=\001", new Expectations()
    {{
        oneOf(handler).error((FixParseFault)with(
            Matchers.allOf(
                Matchers.hasProperty("serverity", Matchers.equalTo(FixParseFault.Serverity.ERROR)),
                Matchers.hasProperty("tag", Matchers.equalTo(8)),
                Matchers.hasProperty("tagContent", Matchers.equalTo(""))
            )));
      oneOf(handler).newTag(with(8), with(""));
    }});
  }
  
  @Test
  @SuppressWarnings("unchecked")
  public void testMessageMustContainJustOne8Equals() throws Exception
  {
    final FixHandler handler = context.mock(FixHandler.class);      
    runTest(handler, "8=FIX.4.2\0019=123\00135=X\0018=FIX.4.2", new Expectations()
    {{
        oneOf(handler).error((FixParseFault)with(
            Matchers.allOf(
                Matchers.hasProperty("serverity", Matchers.equalTo(FixParseFault.Serverity.ERROR)),
                Matchers.hasProperty("tag", Matchers.equalTo(8)),
                Matchers.hasProperty("tagContent", Matchers.equalTo("FIX.4.2"))
            )));
      oneOf(handler).newTag(with(8), with("FIX.4.2"));
      oneOf(handler).newTag(with(9), with("123"));
      oneOf(handler).newTag(with(35), with("X"));
      oneOf(handler).newTag(with(8), with("FIX.4.2"));
    }});
  }
  
  @Test
  @SuppressWarnings("unchecked")
  public void testMessageMustStartWith8ContentsMustBeFIXXXXX() throws Exception
  {
    final FixHandler handler = context.mock(FixHandler.class);      
    runTest(handler, "8=LOST\001", new Expectations()
    {{
        oneOf(handler).warning((FixParseFault)with(
            Matchers.allOf(
                Matchers.hasProperty("serverity", Matchers.equalTo(FixParseFault.Serverity.WARNING)),
                Matchers.hasProperty("tag", Matchers.equalTo(8)),
                Matchers.hasProperty("tagContent", Matchers.equalTo("LOST"))
            )));
      oneOf(handler).newTag(with(8), with("LOST"));
    }});
  }
  
  @Test
  @SuppressWarnings("unchecked")
  public void testMessageSecondTagMustBe9() throws Exception
  {
    final FixHandler handler = context.mock(FixHandler.class);      
    runTest(handler, "8=FIX.4.2\0011=hello", new Expectations()
    {{
        oneOf(handler).warning((FixParseFault)with(
            Matchers.allOf(
                Matchers.hasProperty("serverity", Matchers.equalTo(FixParseFault.Serverity.WARNING)),
                Matchers.hasProperty("tag", Matchers.equalTo(1)),
                Matchers.hasProperty("tagContent", Matchers.equalTo("hello"))
            )));
      oneOf(handler).newTag(with(8), with("FIX.4.2"));
      oneOf(handler).newTag(with(1), with("hello"));
    }});
  }
  
  @Test
  @SuppressWarnings("unchecked")
  public void testMessageSecondTagMustBe9AndBeANumber() throws Exception
  {
    final FixHandler handler = context.mock(FixHandler.class);      
    runTest(handler, "8=FIX.4.2\0019=hello", new Expectations()
    {{
        oneOf(handler).error((FixParseFault)with(
            Matchers.allOf(
                Matchers.hasProperty("serverity", Matchers.equalTo(FixParseFault.Serverity.ERROR)),
                Matchers.hasProperty("tag", Matchers.equalTo(9)),
                Matchers.hasProperty("tagContent", Matchers.equalTo("hello"))
            )));
      oneOf(handler).newTag(with(8), with("FIX.4.2"));
      oneOf(handler).newTag(with(9), with("hello"));
    }});
  }
  
  @Test
  public void testMessageSecondTagMustBe9AndBeAParsableNumber() throws Exception
  {
    final FixHandler handler = context.mock(FixHandler.class);      
    runTest(handler, "8=FIX.4.2\0019=123", new Expectations()
    {{
      oneOf(handler).newTag(with(8), with("FIX.4.2"));
      oneOf(handler).newTag(with(9), with("123"));
    }});
  }
  
  @Test
  @SuppressWarnings("unchecked")
  public void test9ShouldBesuppliedOnlyOnce() throws Exception
  {
    final FixHandler handler = context.mock(FixHandler.class);      
    runTest(handler, "8=FIX.4.2\0019=123\00135=X\0019=456", new Expectations()
    {{
      oneOf(handler).newTag(with(8), with("FIX.4.2"));
      oneOf(handler).newTag(with(9), with("123"));
      oneOf(handler).newTag(with(35), with("X"));
       oneOf(handler).error((FixParseFault)with(
              Matchers.allOf(
                  Matchers.hasProperty("serverity", Matchers.equalTo(FixParseFault.Serverity.ERROR)),
                  Matchers.hasProperty("tag", Matchers.equalTo(9)),
                  Matchers.hasProperty("tagContent", Matchers.equalTo("456"))
              )));
       oneOf(handler).newTag(with(9), with("456"));
    }});
  }
  
////"8=FIX.4.2\0019=12\00135=X\001108=30\00110=049\001"
  @Test
  @SuppressWarnings("unchecked")
  public void testMessageThirdTagMustBe35() throws Exception
  {
    final FixHandler handler = context.mock(FixHandler.class);      
    runTest(handler, "8=FIX.4.2\0019=12\0013=X\001", new Expectations()
    {{
      oneOf(handler).warning((FixParseFault)with(
          Matchers.allOf(
              Matchers.hasProperty("serverity", Matchers.equalTo(FixParseFault.Serverity.WARNING)),
              Matchers.hasProperty("tag", Matchers.equalTo(3)),
              Matchers.hasProperty("tagContent", Matchers.equalTo("X"))
          )));
      oneOf(handler).newTag(with(8), with("FIX.4.2"));
      oneOf(handler).newTag(with(9), with("12"));
      oneOf(handler).newTag(with(3), with("X"));
    }});
  }
  
  
  @Test
  public void testMessageThirdTagMustBe35Correct() throws Exception
  {
    final FixHandler handler = context.mock(FixHandler.class);      
    runTest(handler, "8=FIX.4.2\0019=12\00135=X\001", new Expectations()
    {{
      oneOf(handler).newTag(with(8), with("FIX.4.2"));
      oneOf(handler).newTag(with(9), with("12"));
      oneOf(handler).newTag(with(35), with("X"));
    }});
  }
  
  @Test
  @SuppressWarnings("unchecked")
  public void testCheckSum10Incorrect() throws Exception
  {
    final FixHandler handler = context.mock(FixHandler.class);      
    runTest(handler, "8=FIX.4.2\0019=12\00135=X\001108=30\00110=089\001", new Expectations()
    {{
      oneOf(handler).newTag(with(8), with("FIX.4.2"));
      oneOf(handler).newTag(with(9), with("12"));
      oneOf(handler).newTag(with(35), with("X"));
      oneOf(handler).newTag(with(108), with("30"));
      oneOf(handler).error((FixParseFault)with(
            Matchers.allOf(
                Matchers.hasProperty("serverity", Matchers.equalTo(FixParseFault.Serverity.ERROR)),
                Matchers.hasProperty("tag", Matchers.equalTo(10)),
                Matchers.hasProperty("tagContent", Matchers.equalTo("089"))
            )));
      oneOf(handler).newTag(with(10), with("089"));
    }});
  }
  
  @Test
  @SuppressWarnings("unchecked")
  public void testCheckSum10IncorrectDueToMessage() throws Exception
  {
    final FixHandler handler = context.mock(FixHandler.class);      
    runTest(handler, "8=FIX.4.2\0019=12\00135=X\001108=31\00110=049\001", new Expectations()
    {{
      oneOf(handler).newTag(with(8), with("FIX.4.2"));
      oneOf(handler).newTag(with(9), with("12"));
      oneOf(handler).newTag(with(35), with("X"));
      oneOf(handler).newTag(with(108), with("31"));
      oneOf(handler).error((FixParseFault)with(
            Matchers.allOf(
                Matchers.hasProperty("serverity", Matchers.equalTo(FixParseFault.Serverity.ERROR)),
                Matchers.hasProperty("tag", Matchers.equalTo(10)),
                Matchers.hasProperty("tagContent", Matchers.equalTo("049"))
            )));
      oneOf(handler).newTag(with(10), with("049"));
    }});
  }
  
  @Test
  public void testCheckSum10() throws Exception
  {
    final FixHandler handler = context.mock(FixHandler.class);      
    runTest(handler, "8=FIX.4.2\0019=12\00135=X\001108=30\00110=049\001", new Expectations()
    {{
      oneOf(handler).newTag(with(8), with("FIX.4.2"));
      oneOf(handler).newTag(with(9), with("12"));
      oneOf(handler).newTag(with(35), with("X"));
      oneOf(handler).newTag(with(108), with("30"));
      oneOf(handler).newTag(with(10), with("049"));
    }});
  }
  
  @Test
  @SuppressWarnings("unchecked")
  public void testCheckSum10ShouldBeNumber() throws Exception
  {
    final FixHandler handler = context.mock(FixHandler.class);      
    runTest(handler, "8=FIX.4.2\0019=12\00135=X\001108=30\00110=WORLD\001", new Expectations()
    {{
      oneOf(handler).newTag(with(8), with("FIX.4.2"));
      oneOf(handler).newTag(with(9), with("12"));
      oneOf(handler).newTag(with(35), with("X"));
      oneOf(handler).newTag(with(108), with("30"));
      oneOf(handler).error((FixParseFault)with(
            Matchers.allOf(
                Matchers.hasProperty("serverity", Matchers.equalTo(FixParseFault.Serverity.ERROR)),
                Matchers.hasProperty("tag", Matchers.equalTo(10)),
                Matchers.hasProperty("tagContent", Matchers.equalTo("WORLD"))
            )));
      oneOf(handler).newTag(with(10), with("WORLD"));
    }});
  }
  
  @Test
  @SuppressWarnings("unchecked")
  public void testCheckOn10LengthsShouldBeChecked() throws Exception
  {
    final FixHandler handler = context.mock(FixHandler.class);      
    runTest(handler, "8=FIX.4.2\0019=15\00135=X\001108=30\00110=049\001", new Expectations()
    {{
      oneOf(handler).newTag(with(8), with("FIX.4.2"));
      oneOf(handler).newTag(with(9), with("15"));
      oneOf(handler).newTag(with(35), with("X"));
      oneOf(handler).newTag(with(108), with("30"));
      oneOf(handler).error((FixParseFault)with(
            Matchers.allOf(
                Matchers.hasProperty("serverity", Matchers.equalTo(FixParseFault.Serverity.ERROR)),
                Matchers.hasProperty("tag", Matchers.equalTo(10)),
                Matchers.hasProperty("tagContent", Matchers.equalTo("049"))
            )));
      oneOf(handler).newTag(with(10), with("049"));
    }});
  }
  
  @Test
  public void testReset() throws Exception
  {
    final FixHandler handler = context.mock(FixHandler.class);      
    runTest(handler, "8=FIX.4.2\0019=12\00135=X\001108=30\00110=049\0018=FIX.4.2\0019=12\00135=X\001108=30\00110=049\001", new Expectations()
    {{
      oneOf(handler).newTag(with(8), with("FIX.4.2"));
      oneOf(handler).newTag(with(9), with("12"));
      oneOf(handler).newTag(with(35), with("X"));
      oneOf(handler).newTag(with(108), with("30"));
      oneOf(handler).newTag(with(10), with("049"));
      oneOf(handler).newTag(with(8), with("FIX.4.2"));
      oneOf(handler).newTag(with(9), with("12"));
      oneOf(handler).newTag(with(35), with("X"));
      oneOf(handler).newTag(with(108), with("30"));
      oneOf(handler).newTag(with(10), with("049"));
    }});
  }
  
  @Test
  public void testWhiteSpaceBetweenMessages() throws Exception
  {
    final FixHandler handler = context.mock(FixHandler.class);      
    runTest(handler, "8=FIX.4.2\0019=12\00135=X\001108=30\00110=049\001\n\n\n\t\t\t8=FIX.4.2\0019=12\00135=X\001108=30\00110=049\001", new Expectations()
    {{
      oneOf(handler).newTag(with(8), with("FIX.4.2"));
      oneOf(handler).newTag(with(9), with("12"));
      oneOf(handler).newTag(with(35), with("X"));
      oneOf(handler).newTag(with(108), with("30"));
      oneOf(handler).newTag(with(10), with("049"));
      oneOf(handler).newTag(with(8), with("FIX.4.2"));
      oneOf(handler).newTag(with(9), with("12"));
      oneOf(handler).newTag(with(35), with("X"));
      oneOf(handler).newTag(with(108), with("30"));
      oneOf(handler).newTag(with(10), with("049"));
    }});

  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.