AbstractResult.java revision 6d0dae6a6534a01ee4c58d4f4ee1bf115c82319c
1803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams/* 2803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * Copyright (C) 2010 The Android Open Source Project 3803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * 4803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * Licensed under the Apache License, Version 2.0 (the "License"); 5803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * you may not use this file except in compliance with the License. 6803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * You may obtain a copy of the License at 7803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * 8803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * http://www.apache.org/licenses/LICENSE-2.0 9803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * 10803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * Unless required by applicable law or agreed to in writing, software 11803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * distributed under the License is distributed on an "AS IS" BASIS, 12803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * See the License for the specific language governing permissions and 14803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * limitations under the License. 15803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams */ 16803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 17803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Samspackage com.android.dumprendertree2; 18803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 19803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Samsimport android.os.Bundle; 20803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Samsimport android.os.Message; 216c72eec06e69559b4d990777c7b280aa81586797Alex Sakhartchoukimport android.webkit.WebView; 22803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 235316b9eead0c29df36f46d29c17914bc3c61ed9fJason Sams/** 245316b9eead0c29df36f46d29c17914bc3c61ed9fJason Sams * A class that represent a result of the test. It is responsible for returning the result's 254a36b45c72b91045db49c54d33fd7a05fc5a7a3dAlex Sakhartchouk * raw data and generating its own diff in HTML format. 264a36b45c72b91045db49c54d33fd7a05fc5a7a3dAlex Sakhartchouk */ 278650c32907b74b945dd6cc9a5bf41c12fde005dfAlex Sakhartchoukpublic abstract class AbstractResult implements Comparable<AbstractResult> { 28803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 29803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams public enum TestType { 30803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams TEXT { 31803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams @Override 32803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams public AbstractResult createResult(Bundle bundle) { 33803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams return new TextResult(bundle); 34803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams } 35803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams }, 36803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams RENDER_TREE { 37803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams @Override 38803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams public AbstractResult createResult(Bundle bundle) { 39803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams /** TODO: RenderTree tests are not yet supported */ 40803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams return null; 41803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams } 42803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams }; 43803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 44803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams public abstract AbstractResult createResult(Bundle bundle); 45803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams } 46803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 47803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams public enum ResultCode { 48803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams PASS("Passed"), 49803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams FAIL_RESULT_DIFFERS("Result differs"), 50803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams FAIL_NO_EXPECTED_RESULT("No expected result"), 51803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams FAIL_TIMED_OUT("Timed out"), 52803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams FAIL_CRASHED("Crashed"); 53803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 54803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams private String mTitle; 55803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 56803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams private ResultCode(String title) { 57803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams mTitle = title; 58803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams } 59803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 60803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams @Override 61803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams public String toString() { 62803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams return mTitle; 63803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams } 64803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams } 65803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 66803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams public int compareTo(AbstractResult another) { 67803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams return getRelativePath().compareTo(another.getRelativePath()); 68803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams } 69803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 70803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams /** 71803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * Makes the result object obtain the results of the test from the webview 724a36b45c72b91045db49c54d33fd7a05fc5a7a3dAlex Sakhartchouk * and store them in the format that suits itself bests. This method is asynchronous. 734a36b45c72b91045db49c54d33fd7a05fc5a7a3dAlex Sakhartchouk * The message passed as a parameter is a message that should be sent to its target 748650c32907b74b945dd6cc9a5bf41c12fde005dfAlex Sakhartchouk * when the result finishes obtaining the result. 75803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * 76803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * @param webview 77803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * @param resultObtainedMsg 78803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams */ 79803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams public abstract void obtainActualResults(WebView webview, Message resultObtainedMsg); 80803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 816c72eec06e69559b4d990777c7b280aa81586797Alex Sakhartchouk public abstract void setExpectedImageResult(byte[] expectedResult); 82803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams 83407cae950325682a56fe5373dd218a666da901efAlex Sakhartchouk public abstract void setExpectedTextResult(String expectedResult); 84407cae950325682a56fe5373dd218a666da901efAlex Sakhartchouk 85803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams /** 86803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * Returns result's image data that can be written to the disk. It can be null 87803626f61526c9271a1ffb27f3e3e0bfce767f41Jason Sams * if there is an error of some sort or for example the test times out. 88 * 89 * <p> Some tests will not provide data (like text tests) 90 * 91 * @return 92 * results image data 93 */ 94 public abstract byte[] getActualImageResult(); 95 96 /** 97 * Returns result's text data. It can be null 98 * if there is an error of some sort or for example the test times out. 99 * 100 * @return 101 * results text data 102 */ 103 public abstract String getActualTextResult(); 104 105 /** 106 * Returns the code of this result. 107 * 108 * @return 109 * the code of this result 110 */ 111 public abstract ResultCode getResultCode(); 112 113 /** 114 * Return the type of the result data. 115 * 116 * @return 117 * the type of the result data. 118 */ 119 public abstract TestType getType(); 120 121 public abstract String getRelativePath(); 122 123 /** 124 * Returns a piece of HTML code that presents a visual diff between a result and 125 * the expected result. 126 * 127 * @return 128 * a piece of HTML code with a visual diff between the result and the expected result 129 */ 130 public abstract String getDiffAsHtml(); 131 132 public abstract Bundle getBundle(); 133}