package test.dataprovider;

import org.testng.Assert;
import org.testng.ITestContext;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Test;

/**
 * Tests that when a DataProvider is declared with an ITestContext,
 * this parameter is correctly passed.
 *
 * Created on Dec 28, 2006
 * @author <a href="mailto:cedric@beust.com">Cedric Beust</a>
 */
public class TestContextSampleTest {

  /**
   * @return As many parameters as the name of the included group
   */
  @DataProvider(name = "testContext")
  public Object[][] createContext(ITestContext ctx) {
//    ppp("CONTEXT:" + ctx);
    String[] groups = ctx.getIncludedGroups();

    int n = groups.length > 0 ? new Integer(groups[0]): 0;
    Object[] result = new Object[n];
    for (int i = 0; i < n; i++) {
      result[i] = "foo";
    }

    return new Object[][] {
        new Object[] { result },
    };
  }

  private static void ppp(String s) {
    System.out.println("[TestContextSampleTest] " + s);
  }

  @Test(dataProvider = "testContext", groups="10")
  public void verifyTen(Object[] objects) {
    Assert.assertEquals(objects.length, 10);
  }

  @Test(dataProvider = "testContext", groups="5")
  public void verifyFive(Object[] objects) {
    Assert.assertEquals(objects.length, 5);
  }

}
