1   /*
2    * This file is part of AceLogger.
3    * 
4    * AceLogger is free software: you can redistribute it and/or modify it under the terms of the GNU
5    * Lesser General Public License as published by the Free Software Foundation, either version 3 of
6    * the License, or (at your option) any later version.
7    * 
8    * AceLogger is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
9    * even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
10   * Lesser General Public License for more details.
11   * 
12   * You should have received a copy of the GNU Lesser General Public License along with AceLogger.
13   * If not, see <http://www.gnu.org/licenses/lgpl-3.0.html>.
14   */
15  package net.sourceforge.acelogger.factory.test;
16  
17  import java.util.List;
18  
19  import org.testng.annotations.DataProvider;
20  import org.testng.annotations.Test;
21  
22  import net.sourceforge.acelogger.factory.LevelFilterFactory;
23  import net.sourceforge.acelogger.level.filter.LevelFilter;
24  import net.sourceforge.acelogger.test.DataProviderHelper;
25  
26  import static org.testng.Assert.assertEquals;
27  import static org.testng.Assert.assertTrue;
28  
29  /**
30   * TODO: Create Doc.
31   * 
32   * @author Zardi (https://sourceforge.net/users/daniel_zardi)
33   * @version 1.0.0
34   * @since 1.0.0
35   */
36  @Test
37  public class LevelFilterFactoryTest {
38  
39  	@DataProvider(name = "getRegisteredFiltersDataProvider")
40  	public Object[][] getRegisteredFiltersDataProvider() {
41  		return DataProviderHelper.loadData();
42  	}
43  
44  	@Test(dataProvider = "getRegisteredFiltersDataProvider")
45  	public void testGetRegisterdFilters(List<LevelFilter> filters) {
46  		List<LevelFilter> expected = LevelFilterFactory.getRegisteredLevelFilters();
47  		expected.addAll(filters);
48  		for (LevelFilter currentFilter : filters) {
49  			LevelFilterFactory.registerLevelFilter(currentFilter);
50  		}
51  		List<LevelFilter> registered = LevelFilterFactory.getRegisteredLevelFilters();
52  		assertTrue(expected.containsAll(registered));
53  	}
54  
55  	@DataProvider(name = "getDefaultLevelFilterDataProvider")
56  	public Object[][] getDefaultLevelFilterDataProvider() {
57  		return DataProviderHelper.loadData();
58  	}
59  
60  	@Test(dataProvider = "getDefaultLevelFilterDataProvider")
61  	public void testGetDefaultLevelFilter(LevelFilter filter) {
62  		LevelFilter expected = filter;
63  		if (expected == null) {
64  			expected = LevelFilterFactory.getDefaultLevelFilter();
65  		}
66  		LevelFilterFactory.setDefaultLevelFilter(filter);
67  		LevelFilter got = LevelFilterFactory.getDefaultLevelFilter();
68  		assertEquals(got, expected);
69  	}
70  
71  	@DataProvider(name = "setDefaultLevelFilterDataProvider")
72  	public Object[][] setDefaultLevelFilterDataProvider() {
73  		return DataProviderHelper.loadData();
74  	}
75  
76  	@Test(dataProvider = "setDefaultLevelFilterDataProvider")
77  	public void testSetDefaultLevelFilter(LevelFilter filter, LevelFilter other) {
78  		LevelFilter expected = other;
79  		if (expected == null) {
80  			expected = LevelFilterFactory.getDefaultLevelFilter();
81  		}
82  		LevelFilter previous = LevelFilterFactory.setDefaultLevelFilter(filter);
83  		assertEquals(previous, expected);
84  	}
85  
86  	@DataProvider(name = "getLevelFilterDataProvider")
87  	public Object[][] getLevelFilterDataProvider() {
88  		return DataProviderHelper.loadData();
89  	}
90  
91  	@Test(dataProvider = "getLevelFilterDataProvider")
92  	public void testGetLevelFilter(LevelFilter filter, String identifier, LevelFilter other) {
93  		LevelFilter expected = other;
94  		if (expected == null) {
95  			expected = LevelFilterFactory.getDefaultLevelFilter();
96  		}
97  		LevelFilterFactory.registerLevelFilter(filter);
98  		LevelFilter got = LevelFilterFactory.getLevelFilter(identifier);
99  		assertEquals(got, expected);
100 	}
101 
102 	@Test
103 	public void testSetNullFilter() {
104 		List<LevelFilter> previouslyRegistered = LevelFilterFactory.getRegisteredLevelFilters();
105 		LevelFilter register = LevelFilterFactory.registerLevelFilter(null);
106 		List<LevelFilter> currentlyRegistered = LevelFilterFactory.getRegisteredLevelFilters();
107 		assertTrue(register.equals(LevelFilterFactory.getDefaultLevelFilter())
108 				&& currentlyRegistered.containsAll(previouslyRegistered)
109 				&& currentlyRegistered.size() == previouslyRegistered.size());
110 	}
111 
112 }