// Path: src/test/java/com/codereligion/bugsnag/logback/mock/business/User.java
// public class User {
//     private String email;
//     private String password;
// 
//     public User(final String email, final String password) {
//         this.email = email;
//         this.password = password;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
// 
//         User user = (User) o;
// 
//         if (email != null ? !email.equals(user.email) : user.email != null) return false;
//         if (password != null ? !password.equals(user.password) : user.password != null) return false;
// 
//         return true;
//     }
// 
//     @Override
//     public int hashCode() {
//         int result = email != null ? email.hashCode() : 0;
//         result = 31 * result + (password != null ? password.hashCode() : 0);
//         return result;
//     }
// 
//     @Override
//     public String toString() {
//         return "User{" +
//                 "email='" + email + '\'' +
//                 ", password='" + password + '\'' +
//                 '}';
//     }
// }
// 
// Path: src/main/java/com/codereligion/bugsnag/logback/model/TabVO.java
// public class TabVO {
// 
//     private final Map<String, Object> valuesByKeys = new HashMap<String, Object>();
// 
//     /**
//      * Maps the given {@code key} to the given {@code value}.
//      *
//      * @param key the key to map the {@code value} to
//      * @param value the value for the given {@code key}
//      * @return a reference of this object
//      */
//     public TabVO add(final String key, final Object value) {
//         valuesByKeys.put(key, value);
//         return this;
//     }
// 
//     /**
//      * The underlying data structure of this object.
//      *
//      * @return a map of string to object
//      */
//     public Map<String, Object> getValuesByKey() {
//         return valuesByKeys;
//     }
// }
// 
// Path: src/test/java/com/codereligion/bugsnag/logback/matcher/TabKeyValueMatcher.java
// public static Matcher<TabVO> hasKeyValuePair(final String key, final Object value) {
//     return new TabKeyValueMatcher(key, value);
// }


import com.codereligion.bugsnag.logback.mock.business.User;
import com.codereligion.bugsnag.logback.model.TabVO;
import org.junit.Test;
import static com.codereligion.bugsnag.logback.matcher.TabKeyValueMatcher.hasKeyValuePair;
import static org.hamcrest.MatcherAssert.assertThat;
/**
 * Copyright 2014 www.codereligion.com
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.codereligion.bugsnag.logback.model;


public class TabVOTest {

    @Test
    public void allowsAddingOfKeyValuePairs() {
        final TabVO tabVO = new TabVO();
        tabVO.add("someKey", "someValue");

        assertThat(tabVO, hasKeyValuePair("someKey", "someValue"));
    }

    @Test
    public void allowsAddingComplexObjectsAsValues() {
        final TabVO tabVO = new TabVO();
// Path: src/test/java/com/codereligion/bugsnag/logback/mock/business/User.java
// public class User {
//     private String email;
//     private String password;
// 
//     public User(final String email, final String password) {
//         this.email = email;
//         this.password = password;
//     }
// 
//     @Override
//     public boolean equals(Object o) {
//         if (this == o) return true;
//         if (o == null || getClass() != o.getClass()) return false;
// 
//         User user = (User) o;
// 
//         if (email != null ? !email.equals(user.email) : user.email != null) return false;
//         if (password != null ? !password.equals(user.password) : user.password != null) return false;
// 
//         return true;
//     }
// 
//     @Override
//     public int hashCode() {
//         int result = email != null ? email.hashCode() : 0;
//         result = 31 * result + (password != null ? password.hashCode() : 0);
//         return result;
//     }
// 
//     @Override
//     public String toString() {
//         return "User{" +
//                 "email='" + email + '\'' +
//                 ", password='" + password + '\'' +
//                 '}';
//     }
// }
// 
// Path: src/main/java/com/codereligion/bugsnag/logback/model/TabVO.java
// public class TabVO {
// 
//     private final Map<String, Object> valuesByKeys = new HashMap<String, Object>();
// 
//     /**
//      * Maps the given {@code key} to the given {@code value}.
//      *
//      * @param key the key to map the {@code value} to
//      * @param value the value for the given {@code key}
//      * @return a reference of this object
//      */
//     public TabVO add(final String key, final Object value) {
//         valuesByKeys.put(key, value);
//         return this;
//     }
// 
//     /**
//      * The underlying data structure of this object.
//      *
//      * @return a map of string to object
//      */
//     public Map<String, Object> getValuesByKey() {
//         return valuesByKeys;
//     }
// }
// 
// Path: src/test/java/com/codereligion/bugsnag/logback/matcher/TabKeyValueMatcher.java
// public static Matcher<TabVO> hasKeyValuePair(final String key, final Object value) {
//     return new TabKeyValueMatcher(key, value);
// }


// Path: src/test/java/com/codereligion/bugsnag/logback/model/TabVOTest.java
import com.codereligion.bugsnag.logback.mock.business.User;
import com.codereligion.bugsnag.logback.model.TabVO;
import org.junit.Test;
import static com.codereligion.bugsnag.logback.matcher.TabKeyValueMatcher.hasKeyValuePair;
import static org.hamcrest.MatcherAssert.assertThat;

/**
 * Copyright 2014 www.codereligion.com
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 * http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package com.codereligion.bugsnag.logback.model;


public class TabVOTest {

    @Test
    public void allowsAddingOfKeyValuePairs() {
        final TabVO tabVO = new TabVO();
        tabVO.add("someKey", "someValue");

        assertThat(tabVO, hasKeyValuePair("someKey", "someValue"));
    }

    @Test
    public void allowsAddingComplexObjectsAsValues() {
        final TabVO tabVO = new TabVO();
        tabVO.add("someArray", new User("email", "password"));