Par exemple, les types de données pris en charge pour un contrôle TextBox peuvent être text et selected-text. Chacun de ces types est associé à un nom et à une description de chaîne que le proxy définit. Ce nom est transmis à l'API getTestData(String) en vue de l'extraction des données du contrôle. Lors de l'implémentation de l'API getTestData(String), vous devez utiliser les types de données prédéfinis appropriés, les alimenter avec les données de contrôle puis les renvoyer en conséquence.
Le diagramme de classes suivant illustre les types de données de test prédéfinis mis à disposition par Functional Tester :
Les types de données prédéfinis suivants font partie des types de données que vous pouvez utiliser lors de l'implémentation de l'API de proxy getTestData().
TestDataText
Le type TestDataText représente une valeur de chaîne.
Cet exemple de code illustre l'implémentation du type de données TestDataText dans Java™ :
import com.rational.test.ft.vp.ITestData; import com.rational.test.ft.vp.impl.TestDataText; ITestData testData = null; testData = new TestDataText( getSelectedText()); return testData ;
Cet exemple de code illustre l'implémentation du type de données TestDataText dans .Net :
Rational.Test.Ft.Vp.ITestData testData = null ; object item = ((ComboBox)theTestObject).SelectedItem ; testData = new Rational.Test.Ft.Vp.Impl.TestDataText(((ComboBox)theTestObject).GetItemText(item)); return testData;
TestDataList
Le type TestDataList représente une liste d'éléments : il peut s'agir des éléments d'une zone de liste et de la colonne unique d'un tableau.
Cet exemple de code illustre l'implémentation du type de données TestDataList dans Java :
import com.rational.test.ft.vp.ITestData; import com.rational.test.ft.vp.impl.TestDataElementList; import com.rational.test.ft.vp.impl.TestDataList; Object[] items = getListItemObjects(); TestDataElementList testData = new TestDataElementList(); for ( int i = 0; i < items.length; i ++ ) { if ( items[i] != null ) { testData.add(new TestDataElement(items[i], false)); nonNullValueExist = true; } else testData.add(null); } return (new TestDataList(testData));
Cet exemple de code illustre l'implémentation du type de données TestDataList dans .Net :
Rational.Test.Ft.Vp.ITestData testData = null ; string[] itemList = new string[((ComboBox)theTestObject).Items.Count] ; for(int i=0; i < ((ComboBox)theTestObject).Items.Count; i++) { object item = ((ComboBox)theTestObject).Items[i] ; if (item is string) itemList[i] = (string) item ; else itemList[i] = ((ComboBox)theTestObject).GetItemText(item) ; } testData = new Rational.Test.Ft.Vp.Impl.TestDataList(new Rational.Test.Ft.Vp.Impl.TestDataElementList(itemList)) ; return testData;
TestDataTable
Le type TestDataTable représente des données bidimensionnelles se trouvant dans des contrôles tels que des tableaux ou des grilles.
Cet exemple de code illustre l'implémentation du type de données TestDataTable dans Java :
import com.rational.test.ft.vp.ITestData; import com.rational.test.ft.vp.ITestDataTable; import com.rational.test.ft.vp.impl.TestDataTable; import com.rational.test.ft.vp.impl.TestDataTableRegion; . . int rowCount = getRowCount(); int colCount = getColumnCount(); object[] rowElements; rowElements = new object[colCount]; for (int row = 0; row < rowCount; ++row) { for (int col = 0; col < colCount; ++col) { object item = this.getItemText(row, col); if (item != null) rowElements[col] = item.ToString(); } testData.add(rowElements); } for (int col = 0; col < colCount; ++col) { object item = this.getColumnName(col); if (item != null) data.setColumnHeader(col, header); } testData.addComparisonRegion(TestDataTableRegion.allCells()); testData.setCompareBothByLeftRegions(true); return testData;
Cet exemple de code illustre l'implémentation du type de données TestDataTable dans .Net :
Rational.Test.Ft.Vp.ITestData testData = null; System.Data.DataTable dataTable = GetControlData(); int colCount = dataTable.Columns.Count; int rowCount = dataTable.Rows.Count; object[] rowElements; rowElements = new object[colCount]; for (int row = 0; row < rowCount; ++row) { for (int col = 0; col < colCount; ++col) { object item = null; item = dataTable.Rows[row][col]; if (item != null) item = item.ToString(); rowElements[col] = item; } testData.Add(rowElements); } for (int col = 0; col < colCount; ++col) { string columnName = dataTable.Columns[col].ColumnName; if (columnName != null && !columnName.Equals(string.Empty)) testData.SetColumnHeader(col, columnName); } testData.AddComparisonRegion(TestDataTableRegion.AllCells()); testData.SetCompareBothByLeftRegions(true); return testData;
TestDataTree
Le type TestDataTree représente une structure de données d'arborescence.
Cet exemple de code illustre l'implémentation du type de données TestDataTree dans .Net :
public override Rational.Test.Ft.Vp.ITestData GetTestData(string testDataType) { . . Rational.Test.Ft.Vp.ITestData testData = new TestDataTree(GetRootNodes()); return testData; . . } private ITestDataTreeNodes GetRootNodes() { System.Collections.ArrayList nodeCache = new System.Collections.ArrayList(80); System.Windows.Forms.TreeNodeCollection rootNodes = ((TreeView)this.theTestObject).Nodes; if ( rootNodes != null && rootNodes.Count > 0 ) { for ( int i = 0; i < children.Length; ++i ) { nodeCache.Add(GetNode(children[i], null)); } } ITestDataTreeNode[] nodes = new TestDataTreeNode[nodeCache.Count]; System.Array array = nodeCache.ToArray(); for ( int i = 0; i < array.Length; ++i ) { nodes[i] = (ITestDataTreeNode)array.GetValue(i); } TestDataTreeNodes testNodes = new TestDataTreeNodes(nodes); return testNodes; } // Est appelé par GetRootNodes() private ITestDataTreeNode GetNode(System.Object item, ITestDataTreeNode parent) { String text = ((TreeNode)item).Text; ITestDataTreeAttributes attr = new TestDataTreeAttributes(text); ITestDataTreeNode node = new TestDataTreeNode(parent, text, null, false); System.Collections.ArrayList nodeCache = new System.Collections.ArrayList(20); System.Windows.Forms.TreeNodeCollection childrenNodes = ((TreeNode)item).Nodes; if ( childrenNodes != null && childrenNodes.Count > 0 ) { int length = childrenNodes.Count; if ( length > 0 ) { for ( int i = 0; i < length; ++i ) { nodeCache.Add(GetNode(children[i], node)); } int size = nodeCache.Count; if ( size > 0 ) { ITestDataTreeNode[] childNodes = new ITestDataTreeNode[size]; System.Array array = nodeCache.ToArray(); for ( int i = 0;i < size; i ++ ) childNodes[i] = (ITestDataTreeNode)array.GetValue(i); node.SetChildren(childNodes); } } } return node; }