@Test
  public void testgetAutoEventDate_machakos_givenPdates() throws IOException, Exception {

    log.debug("==testgetAutoEventDate_machakos_givenPdates() Test Start ==");
    ArrayList<ArrayList<HashMap<String, String>>> expected = new ArrayList();
    int expDur = 2;
    HashMap pEvent = new HashMap();
    int pdate = 19820203;
    int edate = 19820206;
    pEvent.put("event", "planting");
    pEvent.put("crid", "MAZ");
    HashMap iEvent = new HashMap();
    int idate = 19820215;
    iEvent.put("event", "irrigation");
    iEvent.put("irop", "ir001");
    HashMap iaEvent = new HashMap();
    int iadate = 19820315;
    iaEvent.put("event", "auto_irrig");
    iaEvent.put("irmdp", "1234");
    HashMap feEvent = new HashMap();
    int fedate = 19820415;
    feEvent.put("event", "fertilizer");
    feEvent.put("fecd", "123");
    HashMap tEvent = new HashMap();
    int tdate = 19820515;
    tEvent.put("event", "tillage");
    tEvent.put("tiimp", "123456");
    HashMap omEvent = new HashMap();
    int omdate = 19820615;
    omEvent.put("event", "organic_matter");
    omEvent.put("omcd", "12345");
    HashMap hEvent = new HashMap();
    int hdate = 19820715;
    hEvent.put("event", "harvest");
    hEvent.put("harm", "111");
    HashMap cEvent = new HashMap();
    int cdate = 19820815;
    cEvent.put("event", "chemicals");
    cEvent.put("chcd", "222");
    HashMap mEvent = new HashMap();
    int mdate = 19820915;
    mEvent.put("event", "mulch");
    mEvent.put("mltp", "333");

    for (int i = 0; i < expDur; i++) {
      expected.add(new ArrayList());
      expected.get(i).add(createEvent(pEvent, pdate, i));
      expected.get(i).get(expected.get(i).size() - 1).put("edate", edate + 10000 * i + "");
      expected.get(i).add(createEvent(iEvent, idate, i));
      expected.get(i).add(createEvent(iaEvent, iadate, i));
      expected.get(i).add(createEvent(feEvent, fedate, i));
      expected.get(i).add(createEvent(tEvent, tdate, i));
      expected.get(i).add(createEvent(omEvent, omdate, i));
      expected.get(i).add(createEvent(hEvent, hdate, i));
      expected.get(i).add(createEvent(cEvent, cdate, i));
      expected.get(i).add(createEvent(mEvent, mdate, i));
    }

    HashMap<String, Object> data = new HashMap();
    AcePathfinderUtil.insertValue(data, "pdate", "19820203");
    MapUtil.getBucket(data, "management").getDataList().get(0).put("edate", "19820204");
    AcePathfinderUtil.insertValue(data, "crid", "MAZ");
    AcePathfinderUtil.insertValue(data, "idate", "19820213");
    AcePathfinderUtil.insertValue(data, "irop", "ir001");
    //        AcePathfinderUtil.insertValue(data, "iadate", "19820313");
    AcePathfinderUtil.insertValue(data, "irmdp", "1234");
    MapUtil.getBucket(data, "management").getDataList().get(2).put("date", "19820313");
    AcePathfinderUtil.insertValue(data, "fedate", "19820413");
    AcePathfinderUtil.insertValue(data, "fecd", "123");
    AcePathfinderUtil.insertValue(data, "tdate", "19820513");
    AcePathfinderUtil.insertValue(data, "tiimp", "123456");
    AcePathfinderUtil.insertValue(data, "omdat", "19820613");
    AcePathfinderUtil.insertValue(data, "omcd", "12345");
    AcePathfinderUtil.insertValue(data, "hadat", "19820713");
    AcePathfinderUtil.insertValue(data, "harm", "111");
    AcePathfinderUtil.insertValue(data, "cdate", "19820813");
    AcePathfinderUtil.insertValue(data, "chcd", "222");
    AcePathfinderUtil.insertValue(data, "mladat", "19820913");
    AcePathfinderUtil.insertValue(data, "mltp", "333");
    data.put("exp_dur", expDur + "");
    data.put("origin_pdate", "19820201");
    String[] pdates = {"19820203", "19830203"};

    log.info("Inputs: {}", data);
    ArrayList<ArrayList<HashMap<String, String>>> results =
        ExperimentHelper.getAutoEventDate(data, pdates);
    log.info("Results: {}", results);

    assertEquals("getAutoEventDate: unexpected result", expected, results);
  }