TinylogLoggingConfiguration { public BitSet calculateFullStackTraceRequirements(final Collection<LogEntryValue>[][] logEntryValues) { BitSet result = new BitSet(logEntryValues.length); for (int i = 0; i < logEntryValues.length; ++i) { Collection<LogEntryValue> values = logEntryValues[i][Level.ERROR.ordinal()]; if (values.contains(LogEntryValue.METHOD) || values.contains(LogEntryValue.FILE) || values.contains(LogEntryValue.LINE)) { result.set(i); } } return result; } TinylogLoggingConfiguration(); @SuppressWarnings("unchecked") Collection<Writer>[][] createWriters(final List<String> tags, final Level minimumLevel, final boolean writingThread); Level calculateMinimumLevel(final Level globalLevel, final Map<String, Level> customLevels); @SuppressWarnings("unchecked") Collection<LogEntryValue>[][] calculateRequiredLogEntryValues(final Collection<Writer>[][] writers); BitSet calculateFullStackTraceRequirements(final Collection<LogEntryValue>[][] logEntryValues); WritingThread createWritingThread(final Collection<Writer>[][] matrix); static Collection<Writer> getAllWriters(final Collection<Writer>[][] matrix); static LogEntry createLogEntry(final StackTraceElement stackTraceElement, final String tag, 
		final Level level, final Throwable exception, final MessageFormatter formatter, final Object obj,
		final Object[] arguments, final Collection<LogEntryValue>[] requiredLogEntryValues, 
		final TinylogContextProvider contextProvider);  }
@Test @SuppressWarnings("unchecked") public void calcFullStackTraceRequirements() { TinylogLoggingConfiguration config = new TinylogLoggingConfiguration(); Collection<LogEntryValue>[][] logEntries = new Collection[5][Level.values().length - 1]; for (Collection<LogEntryValue>[] logEntry: logEntries) { Arrays.fill(logEntry, Collections.emptyList()); } logEntries[0][Level.ERROR.ordinal()] = Collections.singleton(LogEntryValue.TAG); logEntries[1][Level.ERROR.ordinal()] = Collections.singleton(LogEntryValue.METHOD); logEntries[2][Level.ERROR.ordinal()] = Collections.singleton(LogEntryValue.FILE); logEntries[3][Level.ERROR.ordinal()] = Collections.singleton(LogEntryValue.LINE); logEntries[4][Level.ERROR.ordinal()] = Arrays.asList(new LogEntryValue[] {LogEntryValue.FILE, LogEntryValue.LINE}); BitSet requirements = config.calculateFullStackTraceRequirements(logEntries); assertThat(requirements.get(0)).isFalse(); assertThat(requirements.get(1)).isTrue(); assertThat(requirements.get(2)).isTrue(); assertThat(requirements.get(3)).isTrue(); assertThat(requirements.get(4)).isTrue(); }