13c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski/* 23c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * Copyright (C) 2010 The Android Open Source Project 33c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * 43c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * Licensed under the Apache License, Version 2.0 (the "License"); 53c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * you may not use this file except in compliance with the License. 63c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * You may obtain a copy of the License at 73c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * 83c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * http://www.apache.org/licenses/LICENSE-2.0 93c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * 103c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * Unless required by applicable law or agreed to in writing, software 113c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * distributed under the License is distributed on an "AS IS" BASIS, 123c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * See the License for the specific language governing permissions and 143c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * limitations under the License. 153c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski */ 163c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski 173c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowskipackage com.android.dumprendertree2; 183c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski 197ddc0b7a72aa66d699fecce3d855a6c70f844647Maksymilian Osowskiimport android.os.Bundle; 204ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowskiimport android.os.Message; 21394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowskiimport android.util.Log; 224ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowskiimport android.webkit.WebView; 234ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski 24394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowskiimport java.io.ByteArrayInputStream; 25394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowskiimport java.io.ByteArrayOutputStream; 26394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowskiimport java.io.IOException; 27394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowskiimport java.io.ObjectInputStream; 28394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowskiimport java.io.ObjectOutputStream; 29394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowskiimport java.io.Serializable; 30394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski 313c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski/** 323c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * A class that represent a result of the test. It is responsible for returning the result's 333c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * raw data and generating its own diff in HTML format. 343c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski */ 3534f3851e9534b19ab0f02d3eb11f52ddb2635530Steve Blockpublic abstract class AbstractResult implements Comparable<AbstractResult>, Serializable { 363c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski 37dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski private static final String LOG_TAG = "AbstractResult"; 38dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski 393c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski public enum TestType { 405f0ccd76a88586ce85c17cb4db058934e693a4fcMaksymilian Osowski TEXT { 415f0ccd76a88586ce85c17cb4db058934e693a4fcMaksymilian Osowski @Override 425f0ccd76a88586ce85c17cb4db058934e693a4fcMaksymilian Osowski public AbstractResult createResult(Bundle bundle) { 435f0ccd76a88586ce85c17cb4db058934e693a4fcMaksymilian Osowski return new TextResult(bundle); 445f0ccd76a88586ce85c17cb4db058934e693a4fcMaksymilian Osowski } 455f0ccd76a88586ce85c17cb4db058934e693a4fcMaksymilian Osowski }, 465f0ccd76a88586ce85c17cb4db058934e693a4fcMaksymilian Osowski RENDER_TREE { 475f0ccd76a88586ce85c17cb4db058934e693a4fcMaksymilian Osowski @Override 485f0ccd76a88586ce85c17cb4db058934e693a4fcMaksymilian Osowski public AbstractResult createResult(Bundle bundle) { 495f0ccd76a88586ce85c17cb4db058934e693a4fcMaksymilian Osowski /** TODO: RenderTree tests are not yet supported */ 505f0ccd76a88586ce85c17cb4db058934e693a4fcMaksymilian Osowski return null; 515f0ccd76a88586ce85c17cb4db058934e693a4fcMaksymilian Osowski } 525f0ccd76a88586ce85c17cb4db058934e693a4fcMaksymilian Osowski }; 535f0ccd76a88586ce85c17cb4db058934e693a4fcMaksymilian Osowski 545f0ccd76a88586ce85c17cb4db058934e693a4fcMaksymilian Osowski public abstract AbstractResult createResult(Bundle bundle); 553c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski } 563c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski 578a6def02473ee4fbffcd1b34173daf751d316202Steve Block /** 588a6def02473ee4fbffcd1b34173daf751d316202Steve Block * A code representing the result of comparing actual and expected results. 598a6def02473ee4fbffcd1b34173daf751d316202Steve Block */ 60394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski public enum ResultCode implements Serializable { 618a6def02473ee4fbffcd1b34173daf751d316202Steve Block RESULTS_MATCH("Results match"), 628a6def02473ee4fbffcd1b34173daf751d316202Steve Block RESULTS_DIFFER("Results differ"), 638a6def02473ee4fbffcd1b34173daf751d316202Steve Block NO_EXPECTED_RESULT("No expected result"), 648a6def02473ee4fbffcd1b34173daf751d316202Steve Block NO_ACTUAL_RESULT("No actual result"); 653c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski 663c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski private String mTitle; 673c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski 683c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski private ResultCode(String title) { 693c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski mTitle = title; 703c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski } 713c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski 723c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski @Override 733c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski public String toString() { 743c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski return mTitle; 753c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski } 763c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski } 773c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski 78dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski String mAdditionalTextOutputString; 79dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski 806d0dae6a6534a01ee4c58d4f4ee1bf115c82319cMaksymilian Osowski public int compareTo(AbstractResult another) { 816d0dae6a6534a01ee4c58d4f4ee1bf115c82319cMaksymilian Osowski return getRelativePath().compareTo(another.getRelativePath()); 826d0dae6a6534a01ee4c58d4f4ee1bf115c82319cMaksymilian Osowski } 836d0dae6a6534a01ee4c58d4f4ee1bf115c82319cMaksymilian Osowski 84dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski public void setAdditionalTextOutputString(String additionalTextOutputString) { 85dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski mAdditionalTextOutputString = additionalTextOutputString; 86dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski } 87dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski 88dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski public String getAdditionalTextOutputString() { 89dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski return mAdditionalTextOutputString; 90dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski } 91dd4bff62b54033bedc254f517397ae8f954d0dc9Maksymilian Osowski 92394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski public byte[] getBytes() { 93394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski ByteArrayOutputStream baos = null; 94394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski ObjectOutputStream oos = null; 95394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski try { 96394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski try { 97394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski baos = new ByteArrayOutputStream(); 98394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski oos = new ObjectOutputStream(baos); 99394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski oos.writeObject(this); 100394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski } finally { 101394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski if (baos != null) { 102394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski baos.close(); 103394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski } 104394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski if (oos != null) { 105394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski oos.close(); 106394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski } 107394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski } 108394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski } catch (IOException e) { 109394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski Log.e(LOG_TAG, "Unable to serialize result: " + getRelativePath(), e); 110394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski } 111394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski 112394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski return baos == null ? null : baos.toByteArray(); 113394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski } 114394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski 115394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski public static AbstractResult create(byte[] bytes) { 116394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski ByteArrayInputStream bais = null; 117394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski ObjectInputStream ois = null; 118394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski AbstractResult result = null; 119394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski try { 120394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski try { 121394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski bais = new ByteArrayInputStream(bytes); 122394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski ois = new ObjectInputStream(bais); 123394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski result = (AbstractResult)ois.readObject(); 124394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski } finally { 125394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski if (bais != null) { 126394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski bais.close(); 127394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski } 128394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski if (ois != null) { 129394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski ois.close(); 130394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski } 131394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski } 132394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski } catch (IOException e) { 133394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski Log.e(LOG_TAG, "Unable to deserialize result!", e); 134394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski } catch (ClassNotFoundException e) { 135394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski Log.e(LOG_TAG, "Unable to deserialize result!", e); 136394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski } 137394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski return result; 138394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski } 139394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski 140394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski public void clearResults() { 141394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski mAdditionalTextOutputString = null; 142394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski } 143394e0fb84996f5f5ee9e33c9e2f0e11066e6f943Maksymilian Osowski 1443c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski /** 1457ddc0b7a72aa66d699fecce3d855a6c70f844647Maksymilian Osowski * Makes the result object obtain the results of the test from the webview 1467ddc0b7a72aa66d699fecce3d855a6c70f844647Maksymilian Osowski * and store them in the format that suits itself bests. This method is asynchronous. 1474ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski * The message passed as a parameter is a message that should be sent to its target 1484ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski * when the result finishes obtaining the result. 1494ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski * 1504ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski * @param webview 1514ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski * @param resultObtainedMsg 1524ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski */ 1537ddc0b7a72aa66d699fecce3d855a6c70f844647Maksymilian Osowski public abstract void obtainActualResults(WebView webview, Message resultObtainedMsg); 1544ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski 1554ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski public abstract void setExpectedImageResult(byte[] expectedResult); 1564ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski 15701c1f9d9e9e7ab3a40a9bf27195a434eb0c9bb9bMaksymilian Osowski public abstract void setExpectedImageResultPath(String relativePath); 15801c1f9d9e9e7ab3a40a9bf27195a434eb0c9bb9bMaksymilian Osowski 15901c1f9d9e9e7ab3a40a9bf27195a434eb0c9bb9bMaksymilian Osowski public abstract String getExpectedImageResultPath(); 16001c1f9d9e9e7ab3a40a9bf27195a434eb0c9bb9bMaksymilian Osowski 1614ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski public abstract void setExpectedTextResult(String expectedResult); 1624ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski 16301c1f9d9e9e7ab3a40a9bf27195a434eb0c9bb9bMaksymilian Osowski public abstract void setExpectedTextResultPath(String relativePath); 16401c1f9d9e9e7ab3a40a9bf27195a434eb0c9bb9bMaksymilian Osowski 16501c1f9d9e9e7ab3a40a9bf27195a434eb0c9bb9bMaksymilian Osowski public abstract String getExpectedTextResultPath(); 16601c1f9d9e9e7ab3a40a9bf27195a434eb0c9bb9bMaksymilian Osowski 1674ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski /** 1684ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski * Returns result's image data that can be written to the disk. It can be null 1694ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski * if there is an error of some sort or for example the test times out. 1704ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski * 1714ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski * <p> Some tests will not provide data (like text tests) 1724ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski * 1734ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski * @return 1744ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski * results image data 1754ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski */ 1764ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski public abstract byte[] getActualImageResult(); 1774ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski 1784ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski /** 1794ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski * Returns result's text data. It can be null 1804ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski * if there is an error of some sort or for example the test times out. 1813c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * 1823c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * @return 1834ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski * results text data 1843c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski */ 1854ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski public abstract String getActualTextResult(); 1863c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski 1873c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski /** 1888a6def02473ee4fbffcd1b34173daf751d316202Steve Block * Returns the status code representing the result of comparing actual and expected results. 1893c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * 1903c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * @return 1918a6def02473ee4fbffcd1b34173daf751d316202Steve Block * the status code from comparing actual and expected results 1923c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski */ 1934ee7f4b19489f4dc9b87e90d1e5c7742cfa7ebe0Maksymilian Osowski public abstract ResultCode getResultCode(); 1943c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski 1953c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski /** 1968a6def02473ee4fbffcd1b34173daf751d316202Steve Block * Returns whether this test crashed. 1978a6def02473ee4fbffcd1b34173daf751d316202Steve Block * 1988a6def02473ee4fbffcd1b34173daf751d316202Steve Block * @return 1998a6def02473ee4fbffcd1b34173daf751d316202Steve Block * whether this test crashed 2008a6def02473ee4fbffcd1b34173daf751d316202Steve Block */ 2018a6def02473ee4fbffcd1b34173daf751d316202Steve Block public abstract boolean didCrash(); 2028a6def02473ee4fbffcd1b34173daf751d316202Steve Block 2038a6def02473ee4fbffcd1b34173daf751d316202Steve Block /** 2048a6def02473ee4fbffcd1b34173daf751d316202Steve Block * Returns whether this test timed out. 2058a6def02473ee4fbffcd1b34173daf751d316202Steve Block * 2068a6def02473ee4fbffcd1b34173daf751d316202Steve Block * @return 2078a6def02473ee4fbffcd1b34173daf751d316202Steve Block * whether this test timed out 2088a6def02473ee4fbffcd1b34173daf751d316202Steve Block */ 2098a6def02473ee4fbffcd1b34173daf751d316202Steve Block public abstract boolean didTimeOut(); 2108a6def02473ee4fbffcd1b34173daf751d316202Steve Block 2118a6def02473ee4fbffcd1b34173daf751d316202Steve Block /** 2128a6def02473ee4fbffcd1b34173daf751d316202Steve Block * Sets that this test timed out. 2138a6def02473ee4fbffcd1b34173daf751d316202Steve Block */ 2148a6def02473ee4fbffcd1b34173daf751d316202Steve Block public abstract void setDidTimeOut(); 2158a6def02473ee4fbffcd1b34173daf751d316202Steve Block 2168a6def02473ee4fbffcd1b34173daf751d316202Steve Block /** 2178a6def02473ee4fbffcd1b34173daf751d316202Steve Block * Returns whether the test passed. 2188a6def02473ee4fbffcd1b34173daf751d316202Steve Block * 2198a6def02473ee4fbffcd1b34173daf751d316202Steve Block * @return 2208a6def02473ee4fbffcd1b34173daf751d316202Steve Block * whether the test passed 2218a6def02473ee4fbffcd1b34173daf751d316202Steve Block */ 2228a6def02473ee4fbffcd1b34173daf751d316202Steve Block public boolean didPass() { 2238a6def02473ee4fbffcd1b34173daf751d316202Steve Block // Tests that crash can't have timed out or have an actual result. 2248a6def02473ee4fbffcd1b34173daf751d316202Steve Block assert !(didCrash() && didTimeOut()); 2258a6def02473ee4fbffcd1b34173daf751d316202Steve Block assert !(didCrash() && getResultCode() != ResultCode.NO_ACTUAL_RESULT); 2268a6def02473ee4fbffcd1b34173daf751d316202Steve Block return !didCrash() && !didTimeOut() && getResultCode() == ResultCode.RESULTS_MATCH; 2278a6def02473ee4fbffcd1b34173daf751d316202Steve Block } 2288a6def02473ee4fbffcd1b34173daf751d316202Steve Block 2298a6def02473ee4fbffcd1b34173daf751d316202Steve Block /** 2303c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * Return the type of the result data. 2313c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * 2323c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * @return 2333c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * the type of the result data. 2343c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski */ 2353c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski public abstract TestType getType(); 2363c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski 2375f0ccd76a88586ce85c17cb4db058934e693a4fcMaksymilian Osowski public abstract String getRelativePath(); 2385f0ccd76a88586ce85c17cb4db058934e693a4fcMaksymilian Osowski 2393c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski /** 2403c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * Returns a piece of HTML code that presents a visual diff between a result and 2413c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * the expected result. 2423c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * 2433c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * @return 2443c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski * a piece of HTML code with a visual diff between the result and the expected result 2453c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski */ 2463c8ccb384513dd9bae0f98ac516ea36fbaa3173bMaksymilian Osowski public abstract String getDiffAsHtml(); 2477ddc0b7a72aa66d699fecce3d855a6c70f844647Maksymilian Osowski 2487ddc0b7a72aa66d699fecce3d855a6c70f844647Maksymilian Osowski public abstract Bundle getBundle(); 2498a6def02473ee4fbffcd1b34173daf751d316202Steve Block} 250