1561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes/*
2561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Licensed to the Apache Software Foundation (ASF) under one or more
3561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  contributor license agreements.  See the NOTICE file distributed with
4561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  this work for additional information regarding copyright ownership.
5561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  The ASF licenses this file to You under the Apache License, Version 2.0
6561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  (the "License"); you may not use this file except in compliance with
7561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  the License.  You may obtain a copy of the License at
8561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
9561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *     http://www.apache.org/licenses/LICENSE-2.0
10561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *
11561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  Unless required by applicable law or agreed to in writing, software
12561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  distributed under the License is distributed on an "AS IS" BASIS,
13561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  See the License for the specific language governing permissions and
15561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes *  limitations under the License.
16561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes */
17561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
18561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespackage org.apache.harmony.luni.tests.java.util;
19561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
20561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.EmptyStackException;
21561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughesimport java.util.Stack;
22561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
23561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughespublic class StackTest extends junit.framework.TestCase {
24561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
25561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	Stack s;
26561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
27561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
28561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Stack#Stack()
29561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
30561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_Constructor() {
31561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.util.Stack()
32561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Stack creation failed", 0, s.size());
33561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
34561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
35561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
36561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Stack#empty()
37561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
38561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_empty() {
39561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method boolean java.util.Stack.empty()
40561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("New stack answers non-empty", s.empty());
41561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.push("blah");
42561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Stack should not be empty but answers empty", !s.empty());
43561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.pop();
44561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Stack should be empty but answers non-empty", s.empty());
45561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.push(null);
46561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Stack with null should not be empty but answers empty", !s
47561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.empty());
48561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
49561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
50561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
51561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Stack#peek()
52561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
53561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_peek() {
54561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.lang.Object java.util.Stack.peek()
55561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		String item1 = "Ichi";
56561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		String item2 = "Ni";
57561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		String item3 = "San";
58561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.push(item1);
59561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Peek did not return top item when it was the only item", s
60561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.peek() == item1);
61561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.push(item2);
62561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.push(item3);
63561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Peek did not return top item amoung many other items", s
64561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.peek() == item3);
65561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.pop();
66561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Peek did not return top item after a pop", s.pop() == item2);
67561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.push(null);
68561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertNull("Peek did not return top item (wanted: null)",
69561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				s.peek());
70561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
71561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
72561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
73561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Stack#pop()
74561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
75561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_pop() {
76561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.lang.Object java.util.Stack.pop()
77561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		String item1 = "Ichi";
78561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		String item2 = "Ni";
79561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		Object lastPopped;
80561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.push(item1);
81561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.push(item2);
82561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
83561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
84561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			lastPopped = s.pop();
85561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue("a) Pop did not return top item", lastPopped == item2);
86561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (EmptyStackException e) {
87561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail(
88561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					"a) Pop threw EmptyStackException when stack should not have been empty");
89561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
90561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
91561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
92561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			lastPopped = s.pop();
93561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertTrue("b) Pop did not return top item", lastPopped == item1);
94561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (EmptyStackException e) {
95561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail(
96561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					"b) Pop threw EmptyStackException when stack should not have been empty");
97561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
98561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
99561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.push(null);
100561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
101561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			lastPopped = s.pop();
102561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			assertNull("c) Pop did not return top item", lastPopped);
103561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (EmptyStackException e) {
104561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail(
105561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					"c) Pop threw EmptyStackException when stack should not have been empty");
106561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
107561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
108561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try {
109561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			lastPopped = s.pop();
110561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail(
111561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes					"d) Pop did not throw EmptyStackException when stack should have been empty");
112561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		} catch (EmptyStackException e) {
113561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return;
114561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
115561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
116561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
117561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
118561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
119561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Stack#push(java.lang.Object)
120561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
121561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_pushLjava_lang_Object() {
122561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method java.lang.Object
123561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// java.util.Stack.push(java.lang.Object)
124561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertTrue("Used to test", true);
125561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
126561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
127561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
128561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * @tests java.util.Stack#search(java.lang.Object)
129561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
130561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_searchLjava_lang_Object() {
131561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		// Test for method int java.util.Stack.search(java.lang.Object)
132561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		String item1 = "Ichi";
133561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		String item2 = "Ni";
134561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		String item3 = "San";
135561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.push(item1);
136561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.push(item2);
137561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.push(item3);
138561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Search returned incorrect value for equivalent object", 3, s
139561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.search(item1));
140561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Search returned incorrect value for equal object", 3, s
141561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.search("Ichi"));
142561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.pop();
143561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Search returned incorrect value for equivalent object at top of stack",
144561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				1, s.search(item2));
145561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Search returned incorrect value for equal object at top of stack",
146561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				1, s.search("Ni"));
147561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.push(null);
148561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Search returned incorrect value for search for null at top of stack",
149561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				1, s.search(null));
150561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.push("Shi");
151561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Search returned incorrect value for search for null", 2, s
152561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				.search(null));
153561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.pop();
154561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s.pop();
155561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		assertEquals("Search returned incorrect value for search for null--wanted -1",
156561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes				-1, s.search(null));
157561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
158561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
159561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	static class BugStack<E> extends Stack<E>{
160561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		/**
161561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		 *
162561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		 */
163561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		private static final long serialVersionUID = -9133762075342926141L;
164561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
165561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		/**
166561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		 *
167561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		 */
168561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public void setLength(int elementCount)
169561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		{
170561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			this.elementCount = elementCount;
171561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
172561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
173561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		public int getLength()
174561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		{
175561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			return elementCount;
176561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
177561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
178561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
179561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	//test for wrong exception threw by pop method
180561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	public void test_pop_modify_elementCount(){
181561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		BugStack<String> testStack = new BugStack<String>();
182561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testStack.push("A");
183561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testStack.push("B");
184561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		testStack.setLength(20);
185561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		try{
186561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			testStack.pop();
187561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw ArrayIndexOutOfBoundsException here");
188561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
189561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		catch(ArrayIndexOutOfBoundsException e)
190561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		{
191561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			//Expected to throw ArrayIndexOutOfBoundsException here
192561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
193561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		catch(EmptyStackException e)
194561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		{
195561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes			fail("Should throw ArrayIndexOutOfBoundsException here");
196561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		}
197561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
198561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
199561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
200561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * Sets up the fixture, for example, open a network connection. This method
201561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * is called before a test is executed.
202561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
203561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	protected void setUp() {
204561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes		s = new Stack();
205561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
206561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes
207561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	/**
208561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * Tears down the fixture, for example, close a network connection. This
209561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 * method is called after a test is executed.
210561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	 */
211561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	protected void tearDown() {
212561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes	}
213561ee011997c6c2f1befbfaa9d5f0a99771c1d63Elliott Hughes}
214