package kr.kangwoo.util.date;

import kr.kangwoo.util.StringUtils;

import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

public class DatePatternTokenTests {

	@Before
	public void setUp() throws Exception {
	}

	@After
	public void tearDown() throws Exception {
	}

	@Test
	public void testGetTokens() {
		DatePatternToken[] tokens = DatePatternToken.getTokens("yyyy-MM-dd HH:mm:ss.SSS");
		Assert.assertNotNull(tokens);
		Assert.assertEquals(tokens[0].getValue().toString(), "y");
		Assert.assertEquals(tokens[0].getCount(), 4);
		Assert.assertEquals(tokens[1].getValue().toString(), "-");
		Assert.assertEquals(tokens[1].getCount(), 1);
		Assert.assertEquals(tokens[2].getValue().toString(), "M");
		Assert.assertEquals(tokens[2].getCount(), 2);
		Assert.assertEquals(tokens[3].getValue().toString(), "-");
		Assert.assertEquals(tokens[3].getCount(), 1);
		Assert.assertEquals(tokens[4].getValue().toString(), "d");
		Assert.assertEquals(tokens[4].getCount(), 2);
		Assert.assertEquals(tokens[5].getValue().toString(), " ");
		Assert.assertEquals(tokens[5].getCount(), 1);
		Assert.assertEquals(tokens[6].getValue().toString(), "H");
		Assert.assertEquals(tokens[6].getCount(), 2);
		Assert.assertEquals(tokens[7].getValue().toString(), ":");
		Assert.assertEquals(tokens[7].getCount(), 1);
		Assert.assertEquals(tokens[8].getValue().toString(), "m");
		Assert.assertEquals(tokens[8].getCount(), 2);
		Assert.assertEquals(tokens[9].getValue().toString(), ":");
		Assert.assertEquals(tokens[9].getCount(), 1);
		Assert.assertEquals(tokens[10].getValue().toString(), "s");
		Assert.assertEquals(tokens[10].getCount(), 2);
		Assert.assertEquals(tokens[11].getValue().toString(), ".");
		Assert.assertEquals(tokens[11].getCount(), 1);
		Assert.assertEquals(tokens[12].getValue().toString(), "S");
		Assert.assertEquals(tokens[12].getCount(), 3);
	}

	@Test
	public void testContainsPattern() {
		boolean[] result = DatePatternToken.containsPattern(DatePatternToken.getTokens("yyyy-MM-dd HH:mm:ss.SSS"));
		Assert.assertNotNull(result);
		Assert.assertEquals(result.length, 7);
		Assert.assertTrue(result[0]);
		Assert.assertTrue(result[1]);
		Assert.assertTrue(result[2]);
		Assert.assertTrue(result[3]);
		Assert.assertTrue(result[4]);
		Assert.assertTrue(result[5]);
		Assert.assertTrue(result[6]);
		
		boolean[] result1 = DatePatternToken.containsPattern(DatePatternToken.getTokens("MM HH"));
		Assert.assertNotNull(result1);
		Assert.assertEquals(result1.length, 7);
		Assert.assertFalse(result1[0]);
		Assert.assertTrue(result1[1]);
		Assert.assertFalse(result1[2]);
		Assert.assertTrue(result1[3]);
		Assert.assertFalse(result1[4]);
		Assert.assertFalse(result1[5]);
		Assert.assertFalse(result1[6]);
	}

}

