| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you 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 org.apache.felix.ipojo.junit4osgi.command; |
| |
| import java.io.PrintWriter; |
| import java.io.StringWriter; |
| import java.util.ArrayList; |
| import java.util.List; |
| |
| import javax.swing.table.AbstractTableModel; |
| |
| import junit.framework.AssertionFailedError; |
| import junit.framework.Test; |
| |
| /** |
| * Result Table Model. |
| * Store the results of executed tests. |
| * @author <a href="mailto:dev@felix.apache.org">Felix Project Team</a> |
| */ |
| public class ResultTableModel extends AbstractTableModel { |
| |
| /** |
| * Success String. |
| */ |
| public static final String SUCCESS = "success"; |
| |
| /** |
| * Failure String. |
| */ |
| public static final String FAILURE = "failure"; |
| |
| /** |
| * Error String. |
| */ |
| public static final String ERROR = "error"; |
| |
| /** |
| * UUDI. |
| */ |
| private static final long serialVersionUID = 1L; |
| |
| /** |
| * List of results. |
| */ |
| private List<TestRecord> m_results = new ArrayList<TestRecord>(); |
| |
| public int getRowCount() { |
| return m_results.size(); |
| } |
| |
| public int getColumnCount() { |
| return 2; |
| } |
| |
| /** |
| * Adds a failing test. |
| * @param t the test |
| * @param e the assertion error |
| */ |
| public void addTest(Test t, AssertionFailedError e) { |
| TestRecord rec = new TestRecord(t, e); |
| m_results.add(rec); |
| fireTableDataChanged(); |
| } |
| |
| /** |
| * Adds a test in error. |
| * @param t the test |
| * @param e the thrown error |
| */ |
| public void addTest(Test t, Throwable e) { |
| TestRecord rec = new TestRecord(t, e); |
| m_results.add(rec); |
| fireTableDataChanged(); |
| } |
| |
| /** |
| * Adds a sucessfull test. |
| * @param t the test |
| */ |
| public void addTest(Test t) { |
| if (!contains(t)) { |
| TestRecord rec = new TestRecord(t); |
| m_results.add(rec); |
| fireTableDataChanged(); |
| } |
| } |
| |
| public int getTestCount() { |
| return m_results.size(); |
| } |
| |
| /** |
| * Gets the number of success. |
| * @return the number of success |
| */ |
| public int getSucess() { |
| int count = 0; |
| for (TestRecord test : m_results) { |
| if (test.m_wasSucessFull) { |
| count++; |
| } |
| } |
| return count; |
| } |
| |
| /** |
| * Gets the number of errors. |
| * @return the number of errors |
| */ |
| public int getErrors() { |
| int count = 0; |
| for (TestRecord test : m_results) { |
| if (test.m_error != null) { |
| count++; |
| } |
| } |
| return count; |
| } |
| |
| /** |
| * Gets the number of failures. |
| * @return the number of failures |
| */ |
| public int getFailures() { |
| int count = 0; |
| for (TestRecord test : m_results) { |
| if (test.m_failure != null) { |
| count++; |
| } |
| } |
| return count; |
| } |
| |
| |
| /** |
| * Does the result list contains the given test. |
| * @param t the test |
| * @return <code>true</code> if the list contains the test. |
| */ |
| private boolean contains(Test t) { |
| for (TestRecord test : m_results) { |
| if (test.m_test.equals(t)) { return true; } |
| } |
| return false; |
| } |
| |
| /** |
| * Clear the list. |
| */ |
| public void clear() { |
| m_results.clear(); |
| fireTableDataChanged(); |
| } |
| |
| /** |
| * Get the Object placed in the JTable. |
| * @param rowIndex the row |
| * @param columnIndex the column |
| * @return the object |
| * @see javax.swing.table.TableModel#getValueAt(int, int) |
| */ |
| public Object getValueAt(int rowIndex, int columnIndex) { |
| if (columnIndex == 0) { return m_results.get(rowIndex).m_test; } |
| if (columnIndex == 1) { |
| TestRecord tr = m_results.get(rowIndex); |
| if (tr.m_wasSucessFull) { return SUCCESS; } |
| if (tr.m_failure != null) { return FAILURE; } |
| if (tr.m_error != null) { return ERROR; } |
| } |
| return null; |
| } |
| |
| /** |
| * Gets column names. |
| * @param column the column |
| * @return the column name |
| * @see javax.swing.table.AbstractTableModel#getColumnName(int) |
| */ |
| public String getColumnName(int column) { |
| if (column == 0) { return "Test"; } |
| |
| if (column == 1) { return "Status"; } |
| |
| return null; |
| } |
| |
| /** |
| * Gets the message. |
| * @param row the row |
| * @param column the column |
| * @return the message for this cell |
| */ |
| public String getMessage(int row, int column) { |
| if (row == -1) { return null; } |
| TestRecord rec = m_results.get(row); |
| if (rec.m_wasSucessFull) { return "The test " + rec.m_test + " was executed sucessfully."; } |
| if (rec.m_failure != null) { return "The test " + rec.m_test + " has failed : \n" + rec.m_failure.getMessage(); } |
| if (rec.m_error != null) { |
| String message = "The test " + rec.m_test + " has thrown an error : \n" + rec.m_error.getMessage(); |
| StringWriter sw = new StringWriter(); |
| rec.m_error.printStackTrace(new PrintWriter(sw)); |
| message += "\n" + sw.toString(); |
| return message; |
| } |
| return ""; |
| } |
| |
| private class TestRecord { |
| /** |
| * Was the test successful? |
| */ |
| private boolean m_wasSucessFull; |
| |
| /** |
| * The test. |
| */ |
| private Test m_test; |
| |
| /** |
| * The failure. |
| */ |
| private AssertionFailedError m_failure; |
| |
| /** |
| * The error. |
| */ |
| private Throwable m_error; |
| |
| /** |
| * Creates a TestRecord. |
| * @param t the test |
| * @param e the failure |
| */ |
| public TestRecord(Test t, AssertionFailedError e) { |
| m_test = t; |
| m_wasSucessFull = false; |
| m_failure = e; |
| } |
| |
| /** |
| * Creates a TestRecord. |
| * @param t the test |
| * @param e the error |
| */ |
| public TestRecord(Test t, Throwable e) { |
| m_test = t; |
| m_wasSucessFull = false; |
| m_error = e; |
| } |
| |
| /** |
| * Creates a TestRecord. |
| * @param t the test |
| */ |
| public TestRecord(Test t) { |
| m_test = t; |
| m_wasSucessFull = true; |
| } |
| } |
| |
| } |