// unit tests
  public static void main(String args[]) {

    System.out.println(TimeEffectSet.getTime(new Date())[0]);

    TimeEffectSet set = new TimeEffectSet(new Linear());

    ElectrolandProperties ep = new ElectrolandProperties("Gotham-global.properties");

    for (String name : ep.getObjectNames("west")) {
      if (name.startsWith("timeEffect")) {
        set.add(new TimeEffect(ep.getParams("west", name), null));
      }
    }

    for (TimeEffect effect : set.effects) {
      System.out.println(effect);
      TimeEffect first = set.effects.get(0);
      System.out.println("effect is before first " + effect.isBefore(first.hours, first.minutes));
      System.out.println("first is effect first " + first.isBefore(effect.hours, effect.minutes));
      System.out.println("");
    }

    for (int hour = 0; hour < 24; hour++) {
      int minutes = 25;
      Bracket b = set.getEffectBracket(hour, minutes);
      System.out.println("for " + hour + ":" + minutes + "...");
      System.out.println("last:  " + b.prior);
      System.out.println("next: " + b.next);
      //            System.out.println("blended: " + set.getEffect(hour, minutes));
      System.out.println();
    }

    int[] now = TimeEffectSet.getTime(new Date());
    System.out.println(set.getEffectBracket(now[0], now[1]).prior);
    System.out.println(set.getEffectBracket(now[0], now[1]).next);

    // get color
  }
  private Bracket getEffectBracket(int hours, int minutes) {

    Bracket bracket = new Bracket();

    for (TimeEffect effect : effects) {
      if (effect.isBefore(hours, minutes)) {
        bracket.prior = effect;
      } else {
        bracket.next = effect;
        break;
      }
    }

    TimeEffect first = effects.get(0);

    if (bracket.prior == null) { // prior effect was yesterday
      bracket.prior = effects.get(effects.size() - 1);
    }
    if (bracket.next == null) { // next effect is tomorrow
      bracket.next = first;
    }

    return bracket;
  }