/stat/src/test/java/com/google/sitebricks/stat/StatReadersTest.java
http://github.com/dhanji/sitebricks · Java · 143 lines · 89 code · 28 blank · 26 comment · 0 complexity · 7dbd23780ad12e09ade492accc142d00 MD5 · raw file
- /**
- * Copyright (C) 2011 Google Inc.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
- package com.google.sitebricks.stat;
- import com.google.common.collect.Lists;
- import org.testng.annotations.BeforeMethod;
- import org.testng.annotations.Test;
- import java.lang.reflect.Field;
- import java.lang.reflect.Method;
- import java.util.List;
- import static org.testng.Assert.assertEquals;
- /**
- * This class includes tests for the logic within {@link StatReaders}.
- *
- * @author ffaber@gmail.com (Fred Faber)
- */
- public class StatReadersTest {
- static class TestClass {
- static Integer staticField;
- static Integer getStaticFieldValue() {
- return staticField;
- }
- Integer instanceField;
- Integer getInstanceFieldValue() {
- return instanceField;
- }
- }
- static final Integer STATIC_FIELD_STARTING_VALUE = 1;
- static final Integer INSTANCE_FIELD_STARTING_VALUE = 2;
- Field staticField;
- Method staticMethod;
- Field instanceField;
- Method instanceMethod;
- TestClass testClass;
-
- @BeforeMethod
- public void setUp() throws Exception {
- testClass = new TestClass();
- TestClass.staticField = STATIC_FIELD_STARTING_VALUE;
- testClass.instanceField = INSTANCE_FIELD_STARTING_VALUE;
- staticField = TestClass.class.getDeclaredField("staticField");
- staticMethod = TestClass.class.getDeclaredMethod("getStaticFieldValue");
- instanceField = TestClass.class.getDeclaredField("instanceField");
- instanceMethod = TestClass.class.getDeclaredMethod("getInstanceFieldValue");
- }
- @Test
- public void testInstanceFieldReader() {
- StatReader statReader = StatReaders.forField(instanceField, testClass);
- assertEquals(testClass.instanceField, statReader.readStat());
- // Mutate the field and confirm that its updated value is read.
- testClass.instanceField++;
- assertEquals(testClass.instanceField, statReader.readStat());
- }
-
- @Test public void testStaticFieldReader() {
- StatReader statReader = StatReaders.forStaticField(staticField);
- assertEquals(TestClass.staticField, statReader.readStat());
- // Mutate the field and confirm that its updated value is read.
- TestClass.staticField++;
- assertEquals(TestClass.staticField, statReader.readStat());
- }
-
- @Test public void testInstanceMethodReader() {
- StatReader statReader = StatReaders.forMethod(instanceMethod, testClass);
- assertEquals(testClass.getInstanceFieldValue(), statReader.readStat());
-
- // Mutate the field and confirm that its updated value is read.
- testClass.instanceField++;
- assertEquals(testClass.getInstanceFieldValue(), statReader.readStat());
- }
-
- @Test public void testStaticMethodReader() {
- StatReader statReader = StatReaders.forStaticMethod(staticMethod);
- assertEquals(TestClass.getStaticFieldValue(), statReader.readStat());
- // Mutate the field and confirm that its updated value is read.
- TestClass.staticField++;
- assertEquals(TestClass.getStaticFieldValue(), statReader.readStat());
- }
- @Test public void testInstanceMemberReader_forField() {
- StatReader memberReader = StatReaders.forMember(instanceField, testClass);
- StatReader fieldReader = StatReaders.forField(instanceField, testClass);
- assertEquals(memberReader, fieldReader);
- }
-
- @Test public void testInstanceMemberReader_forMethod() {
- StatReader memberReader = StatReaders.forMember(instanceMethod, testClass);
- StatReader methodReader = StatReaders.forMethod(instanceMethod, testClass);
- assertEquals(memberReader, methodReader);
- }
-
- @Test public void testStaticMemberReader_forField() {
- StatReader memberReader = StatReaders.forStaticMember(staticField);
- StatReader fieldReader = StatReaders.forStaticField(staticField);
- assertEquals(memberReader, fieldReader);
- }
-
- @Test public void testStaticMemberReader_forMember() {
- StatReader memberReader = StatReaders.forStaticMember(staticMethod);
- StatReader methodReader = StatReaders.forStaticMethod(staticMethod);
- assertEquals(memberReader, methodReader );
- }
- @Test public void testObjectReader() {
- List<Integer> statList = Lists.newArrayList(1, 2);
- StatReader statReader = StatReaders.forObject(statList);
- assertEquals(statList, statReader.readStat());
- // If we add a value, we expect it to be reflected in the stat that is read
- statList.add(3);
- assertEquals(statList, statReader.readStat());
- }
- }