// Path: core/src/main/java/au/com/sensis/stubby/model/StubParam.java
// public class StubParam {
// 
//     private String name;
//     private String value;
//     
//     public StubParam() { }
// 
//     public StubParam(String name, String value) {
//         this.name = name;
//         this.value = value;
//     }
// 
//     public StubParam(StubParam other) { // copy constructor
//         this.name = other.name;
//         this.value = other.value;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getValue() {
//         return value;
//     }
// 
//     public void setValue(String value) {
//         this.value = value;
//     }
//     
//     @Override
//     public String toString() {
//         return name + "=" + value;
//     }
// 
// }
// 
// Path: core/src/main/java/au/com/sensis/stubby/model/StubRequest.java
// public class StubRequest extends StubMessage {
// 
//     private String method;
//     private String path;
//     private List<StubParam> params;
// 
//     public StubRequest() { }
//     
//     public StubRequest(StubRequest other) { // copy constructor
//         super(other);
//         this.method = other.method;
//         this.path = other.path;
//         if (other.params != null) {
//             this.params = new ArrayList<StubParam>();
//             for (StubParam param : other.params) {
//                 this.params.add(new StubParam(param));
//             }
//         }
//     }
//     
//     public String getMethod() {
//         return method;
//     }
// 
//     public void setMethod(String method) {
//         this.method = method;
//     }
// 
//     public String getPath() {
//         return path;
//     }
// 
//     public void setPath(String path) {
//         this.path = path;
//     }
// 
//     public List<StubParam> getParams() {
//         return params;
//     }
// 
//     public void setParams(List<StubParam> params) {
//         this.params = params;
//     }
//     
//     @JsonIgnore
//     public String getParam(String name) { // get first, case sensitive lookup
//         if (params != null) {
//             for (StubParam param : params) {
//                 if (param.getName().equals(name)) {
//                     return param.getValue();
//                 }
//             }
//         }
//         return null; // not found
//     }
// 
//     @JsonIgnore
//     public List<String> getParams(String name) { // get all, case sensitive lookup
//         List<String> result = new ArrayList<String>();
//         if (params != null) {
//             for (StubParam param : params) {
//                 if (param.getName().equals(name)) {
//                     result.add(param.getValue());
//                 }
//             }
//         }
//         return result; // empty list if not found
//     }
// 
// }


import static org.hamcrest.Matchers.hasItem;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import au.com.sensis.stubby.model.StubParam;
import au.com.sensis.stubby.model.StubRequest;
package au.com.sensis.stubby.service.model;





public class RequestPatternTest {

    private static final List<StubParam> EMPTY_PARAMS = Collections.emptyList();
    
    private StubRequest stubbedRequest; 
    private StubRequest incomingRequest;
    
    private RequestPattern instance1;
    private RequestPattern instance2;
        
    @Before
    public void before() {
        stubbedRequest = new StubRequest();
        stubbedRequest.setMethod("PO.*");
        stubbedRequest.setPath("/request/.*");
        stubbedRequest.setParams(Arrays.asList(new StubParam("foo", "b.r")));
        stubbedRequest.setHeaders(Arrays.asList(new StubParam("Content-Type", "text/plain; .+")));
        stubbedRequest.setBody("body .*");        
        
        incomingRequest = new StubRequest();
        incomingRequest.setMethod("POST");
        incomingRequest.setPath("/request/path");
// Path: core/src/main/java/au/com/sensis/stubby/model/StubParam.java
// public class StubParam {
// 
//     private String name;
//     private String value;
//     
//     public StubParam() { }
// 
//     public StubParam(String name, String value) {
//         this.name = name;
//         this.value = value;
//     }
// 
//     public StubParam(StubParam other) { // copy constructor
//         this.name = other.name;
//         this.value = other.value;
//     }
// 
//     public String getName() {
//         return name;
//     }
// 
//     public void setName(String name) {
//         this.name = name;
//     }
// 
//     public String getValue() {
//         return value;
//     }
// 
//     public void setValue(String value) {
//         this.value = value;
//     }
//     
//     @Override
//     public String toString() {
//         return name + "=" + value;
//     }
// 
// }
// 
// Path: core/src/main/java/au/com/sensis/stubby/model/StubRequest.java
// public class StubRequest extends StubMessage {
// 
//     private String method;
//     private String path;
//     private List<StubParam> params;
// 
//     public StubRequest() { }
//     
//     public StubRequest(StubRequest other) { // copy constructor
//         super(other);
//         this.method = other.method;
//         this.path = other.path;
//         if (other.params != null) {
//             this.params = new ArrayList<StubParam>();
//             for (StubParam param : other.params) {
//                 this.params.add(new StubParam(param));
//             }
//         }
//     }
//     
//     public String getMethod() {
//         return method;
//     }
// 
//     public void setMethod(String method) {
//         this.method = method;
//     }
// 
//     public String getPath() {
//         return path;
//     }
// 
//     public void setPath(String path) {
//         this.path = path;
//     }
// 
//     public List<StubParam> getParams() {
//         return params;
//     }
// 
//     public void setParams(List<StubParam> params) {
//         this.params = params;
//     }
//     
//     @JsonIgnore
//     public String getParam(String name) { // get first, case sensitive lookup
//         if (params != null) {
//             for (StubParam param : params) {
//                 if (param.getName().equals(name)) {
//                     return param.getValue();
//                 }
//             }
//         }
//         return null; // not found
//     }
// 
//     @JsonIgnore
//     public List<String> getParams(String name) { // get all, case sensitive lookup
//         List<String> result = new ArrayList<String>();
//         if (params != null) {
//             for (StubParam param : params) {
//                 if (param.getName().equals(name)) {
//                     result.add(param.getValue());
//                 }
//             }
//         }
//         return result; // empty list if not found
//     }
// 
// }


// Path: core/src/test/java/au/com/sensis/stubby/service/model/RequestPatternTest.java
import static org.hamcrest.Matchers.hasItem;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNull;
import static org.junit.Assert.assertThat;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.junit.Before;
import org.junit.Test;
import au.com.sensis.stubby.model.StubParam;
import au.com.sensis.stubby.model.StubRequest;

package au.com.sensis.stubby.service.model;





public class RequestPatternTest {

    private static final List<StubParam> EMPTY_PARAMS = Collections.emptyList();
    
    private StubRequest stubbedRequest; 
    private StubRequest incomingRequest;
    
    private RequestPattern instance1;
    private RequestPattern instance2;
        
    @Before
    public void before() {
        stubbedRequest = new StubRequest();
        stubbedRequest.setMethod("PO.*");
        stubbedRequest.setPath("/request/.*");
        stubbedRequest.setParams(Arrays.asList(new StubParam("foo", "b.r")));
        stubbedRequest.setHeaders(Arrays.asList(new StubParam("Content-Type", "text/plain; .+")));
        stubbedRequest.setBody("body .*");        
        
        incomingRequest = new StubRequest();
        incomingRequest.setMethod("POST");
        incomingRequest.setPath("/request/path");
        incomingRequest.setParams(Arrays.asList(new StubParam("foo", "bar")));