001package com.avaje.ebean;
002
003import java.util.LinkedHashMap;
004import java.util.Map;
005
006/**
007 * Holds the method name and arguments.
008 * <p/>
009 * Used to collect the invoked methods for asserting.
010 */
011public class MethodCall {
012
013  String name;
014
015  Map<String,Object> args = new LinkedHashMap<String, Object>();
016
017  public MethodCall(String name) {
018    this.name = name;
019  }
020
021  public String toString() {
022    return name+":"+args;
023  }
024
025
026  /**
027   * Add the single argument.
028   */
029  public MethodCall with(String name1, Object arg1) {
030    return with(name1, arg1, null, null, null, null);
031  }
032
033  /**
034   * Add the two arguments.
035   */
036  public MethodCall with(String name1, Object arg1, String name2, Object arg2) {
037    return with(name1, arg1, name2, arg2, null, null);
038  }
039
040  /**
041   * Add three arguments.
042   */
043  public MethodCall with(String name1, Object arg1, String name2, Object arg2, String name3, Object arg3) {
044    return with(name1, arg1, name2, arg2, name3, arg3, null, null);
045  }
046
047  /**
048   * Add four arguments.
049   */
050  public MethodCall with(String name1, Object arg1, String name2, Object arg2, String name3, Object arg3, String name4, Object arg4) {
051    args.put(name1, arg1);
052    if (name2 != null) {
053      args.put(name2, arg2);
054      if (name3 != null) {
055        args.put(name3, arg3);
056        if (name4 != null) {
057          args.put(name4, arg4);
058        }
059      }
060    }
061    return this;
062  }
063
064  public static MethodCall of(String methodName) {
065    return new MethodCall(methodName);
066  }
067}