001// Copyright 2009 by Basil Vandegriend.  All rights reserved.
002
003package com.basilv.examples.concurrency;
004
005import static org.junit.Assert.*;
006
007import java.util.Date;
008
009import org.junit.*;
010
011public class DateProcessorSingleThreadedTest
012{
013  private DateProcessor dateProcessor;
014  
015  @Before
016  public void setUp() {
017    DateProcessor.setInstanceForTesting(null);
018    dateProcessor = DateProcessor.getInstance();
019  }
020  
021  @Test
022  public void initialState() {
023    assertEquals(0, dateProcessor.getDatesProcessedCount());
024    assertEquals(0, dateProcessor.getDatesValidCount());
025  }
026  
027  @Test
028  public void parseValidDate() {
029    Date date = dateProcessor.processDate("2009-11-25");
030    assertNotNull(date);
031    assertEquals(createDate(2009, 11, 25), date);
032    assertEquals(1, dateProcessor.getDatesProcessedCount());
033    assertEquals(1, dateProcessor.getDatesValidCount());
034  }
035
036  @Test
037  public void parseInvalidDate() {
038    assertNull(dateProcessor.processDate("foo"));
039    assertEquals(1, dateProcessor.getDatesProcessedCount());
040    assertEquals(0, dateProcessor.getDatesValidCount());
041  }
042  
043  @SuppressWarnings("deprecation") // Due to stupid API on java.util.Date
044  private Date createDate(int year, int monthIndexedFromOne, int dayOfMonth) {
045    return new Date(year - 1900, monthIndexedFromOne - 1, dayOfMonth);
046  }
047}