1public void testCardemo() throws Exception ...{ 2
mcp.getRealizedVisibleBrowserWindow(); 3
final BitSet bitSet = new BitSet(); 4
AjaxListener listener = new AjaxListener() ...{ 5
public void endAjax(Map eventMap) ...{ 6
bitSet.flip(TestFeature.RECEIVED_END_AJAX_EVENT.ordinal()); 7
if (null != eventMap) ...{ 8
bitSet.flip(TestFeature.HAS_MAP.ordinal()); 9
} 10
// Make some assertions about the response text 11
String responseText = (String) eventMap.get("responseText"); 12
if (null != responseText) ...{ 13
if (-1 != responseText.indexOf("<partial-response>") && 14
-1 != responseText.indexOf("</partial-response>")) ...{ 15
bitSet.flip(TestFeature.HAS_VALID_RESPONSE_TEXT.ordinal()); 16
} 17
} 18
Document responseXML = (Document) 19
eventMap.get("responseXML"); 20
Element rootElement = null, element = null; 21
Node node = null; 22
String tagName = null; 23
try ...{ 24
rootElement = responseXML.getDocumentElement(); 25
tagName = rootElement.getTagName(); 26
if (tagName.equals("partial-response")) ...{ 27
element = (Element) rootElement.getFirstChild(); 28
tagName = element.getTagName(); 29
if (tagName.equals("components")) ...{ 30
element = (Element) rootElement.getLastChild(); 31
tagName = element.getTagName(); 32
if (tagName.equals("state")) ...{ 33
bitSet.flip(TestFeature. 34
HAS_VALID_RESPONSE_XML.ordinal()); 35
} 36
} 37
} 38
} 39
catch (Throwable t) ...{ 40
41
} 42
43
String readyState = (String) eventMap.get("readyState"); 44
bitSet.set(TestFeature.HAS_VALID_READYSTATE.ordinal(), 45
null != readyState && readyState.equals("4")); 46
bitSet.flip(TestFeature.STOP_WAITING.ordinal()); 47
48
} 49
}; 50
mcp.addAjaxListener(listener); 51
52
// Load the main page of the app 53
mcp.blockingLoad("http://javaserver.org/jsf-ajax-cardemo/faces/chooseLocale.jsp"); 54
// Choose the "German" language button 55
mcp.blockingClickElement("Germany"); 56
// Choose the roadster 57
mcp.blockingClickElement("roadsterButton"); 58
// Sample the Basis-Preis and Ihr Preis before the ajax transaction 59
Element pricePanel = mcp.findElement("zone1"); 60
assertNotNull(pricePanel); 61
String pricePanelText = pricePanel.getTextContent(); 62
63
assertNotNull(pricePanelText); 64
assertTrue(pricePanelText.matches("(?s).*Basis-Preis\\s*15700.*")); 65
assertTrue(pricePanelText.matches("(?s).*Ihr Preis\\s*15700.*")); 66
67
// Choose the "Tempomat" checkbox 68
bitSet.clear(); 69
mcp.clickElement("cruiseControlCheckbox"); 70
71
while (!bitSet.get(TestFeature.STOP_WAITING.ordinal())) ...{ 72
Thread.currentThread().sleep(5000); 73
} 74
75
// assert that the ajax transaction succeeded 76
assertTrue(bitSet.get(TestFeature.RECEIVED_END_AJAX_EVENT.ordinal())); 77
assertTrue(bitSet.get(TestFeature.HAS_MAP.ordinal())); 78
assertTrue(bitSet.get(TestFeature.HAS_VALID_RESPONSE_TEXT.ordinal())); 79
assertTrue(bitSet.get(TestFeature.HAS_VALID_RESPONSE_XML.ordinal())); 80
assertTrue(bitSet.get(TestFeature.HAS_VALID_READYSTATE.ordinal())); 81
bitSet.clear(); 82
83
// Sample the Basis-Preis and Ihr-Preis after the ajax transaction 84
pricePanel = mcp.findElement("zone1"); 85
assertNotNull(pricePanel); 86
pricePanelText = pricePanel.getTextContent(); 87
88
assertNotNull(pricePanelText); 89
assertTrue(pricePanelText.matches("(?s).*Basis-Preis\\s*15700.*")); 90
assertTrue(pricePanelText.matches("(?s).*Ihr Preis\\s*16600.*")); 91
92
mcp.deleteBrowserControl(); 93
}
| 第1页: setUp 方法 | 第2页: testCardDemo方法 |
| 第3页: 分析代码 |