Package net.sf.uadetector.internal.data

Source Code of net.sf.uadetector.internal.data.DataEqualsTest

/*******************************************************************************
* Copyright 2012 André Rouél
*
* 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 net.sf.uadetector.internal.data;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.regex.Pattern;

import net.sf.uadetector.UserAgentFamily;
import net.sf.uadetector.internal.data.domain.Browser;
import net.sf.uadetector.internal.data.domain.BrowserPattern;
import net.sf.uadetector.internal.data.domain.BrowserType;
import net.sf.uadetector.internal.data.domain.OperatingSystem;
import net.sf.uadetector.internal.data.domain.OperatingSystemPattern;
import net.sf.uadetector.internal.data.domain.Robot;

import static org.fest.assertions.Assertions.assertThat;
import org.junit.Test;

public class DataEqualsTest {

  private static Browser createBrowser(final int id) {
    final SortedSet<OperatingSystemPattern> osPatternSet = new TreeSet<OperatingSystemPattern>();
    final OperatingSystem os = new OperatingSystem(1, "n1", "f1", "iu1", osPatternSet, "p1", "pu1", "u1", "i1");
    final BrowserType browserType = new BrowserType(1, "Browser");
    return new Browser(id, UserAgentFamily.FIREBIRD, UserAgentFamily.FIREBIRD.getName(), new TreeSet<BrowserPattern>(), browserType,
        os, "icn", "iu1", "p1", "pu1", "u1");
  }

  private static OperatingSystem createOperatingSystem(final int id) {
    final SortedSet<OperatingSystemPattern> osPatternSet = new TreeSet<OperatingSystemPattern>();
    return new OperatingSystem(id, "n1", "f1", "iu1", osPatternSet, "p1", "pu1", "u1", "i1");
  }

  private static final Robot createRobot(final int id) {
    return new Robot(id, "Majestic-12", UserAgentFamily.MJ12BOT, "Majestic-12 bot", "http://majestic12.co.uk/bot.php", "Majestic-12",
        "http://www.majestic12.co.uk/", "MJ12bot/v1.4.3", "mj12.png");
  }

  @Test
  public void equals_different_browserPatterns() {
    final Browser browser = createBrowser(1);
    final BrowserPattern pattern1 = new BrowserPattern(1, Pattern.compile("[0-9]+"), 1);
    final BrowserPattern pattern2 = new BrowserPattern(2, Pattern.compile("[0-9]+"), 1);
    final BrowserPattern pattern3 = new BrowserPattern(3, Pattern.compile("[0-9]+"), 3);
    final BrowserPattern pattern4 = new BrowserPattern(3, Pattern.compile("[0-9]+"), 3);
    final TreeMap<BrowserPattern, Browser> patterns1 = new TreeMap<BrowserPattern, Browser>();
    patterns1.put(pattern1, browser);
    patterns1.put(pattern2, browser);
    final TreeMap<BrowserPattern, Browser> patterns2 = new TreeMap<BrowserPattern, Browser>();
    patterns2.put(pattern1, browser);
    final TreeMap<BrowserPattern, Browser> patterns3 = new TreeMap<BrowserPattern, Browser>();
    patterns3.put(pattern3, browser);
    final TreeMap<BrowserPattern, Browser> patterns4 = new TreeMap<BrowserPattern, Browser>();
    patterns4.put(pattern4, browser);

    final Data data1 = new DataBlueprint().patternToBrowserMap(patterns1).build();
    final Data data2 = new DataBlueprint().patternToBrowserMap(patterns2).build();
    final Data data3 = new DataBlueprint().patternToBrowserMap(patterns3).build();
    final Data data4 = new DataBlueprint().patternToBrowserMap(patterns4).build();

    assertThat(data1.equals(data2)).isFalse();
    assertThat(data1.hashCode() == data2.hashCode()).isFalse();
    assertThat(data2.equals(data1)).isFalse();

    assertThat(data1.equals(data3)).isFalse();
    assertThat(data1.hashCode() == data3.hashCode()).isFalse();
    assertThat(data3.equals(data1)).isFalse();

    assertThat(data3.equals(data4)).isTrue();
    assertThat(data3.hashCode() == data4.hashCode()).isTrue();
    assertThat(data4.equals(data3)).isTrue();

    assertThat(data2.equals(data3)).isFalse();
    assertThat(data2.hashCode() == data3.hashCode()).isFalse();

    assertThat(data1.equals(data4)).isFalse();
    assertThat(data1.hashCode() == data4.hashCode()).isFalse();
  }

  @Test
  public void equals_different_browsers() {
    final Browser browser1 = createBrowser(1);
    final Browser browser2 = createBrowser(2);
    final Browser browser3 = createBrowser(3);
    final Set<Browser> browsers1 = new HashSet<Browser>();
    browsers1.add(browser1);
    browsers1.add(browser2);
    final Set<Browser> browsers2 = new HashSet<Browser>();
    browsers2.add(browser3);
    browsers2.add(browser2);
    browsers2.add(browser1);
    final Data data1 = new DataBlueprint().browsers(browsers1).build();
    final Data data2 = new DataBlueprint().browsers(browsers2).build();
    assertThat(data1.equals(data2)).isFalse();
  }

  @Test
  public void equals_different_operatingSystemPatterns() {
    final OperatingSystem operatingSystem = createOperatingSystem(1);
    final OperatingSystemPattern pattern1 = new OperatingSystemPattern(1, Pattern.compile("[0-9]+"), 1);
    final OperatingSystemPattern pattern2 = new OperatingSystemPattern(2, Pattern.compile("[0-9]+"), 1);
    final OperatingSystemPattern pattern3 = new OperatingSystemPattern(3, Pattern.compile("[0-9]+"), 3);
    final OperatingSystemPattern pattern4 = new OperatingSystemPattern(3, Pattern.compile("[0-9]+"), 3);
    final TreeMap<OperatingSystemPattern, OperatingSystem> patterns1 = new TreeMap<OperatingSystemPattern, OperatingSystem>();
    patterns1.put(pattern1, operatingSystem);
    patterns1.put(pattern2, operatingSystem);
    final TreeMap<OperatingSystemPattern, OperatingSystem> patterns2 = new TreeMap<OperatingSystemPattern, OperatingSystem>();
    patterns2.put(pattern1, operatingSystem);
    final TreeMap<OperatingSystemPattern, OperatingSystem> patterns3 = new TreeMap<OperatingSystemPattern, OperatingSystem>();
    patterns3.put(pattern3, operatingSystem);
    final TreeMap<OperatingSystemPattern, OperatingSystem> patterns4 = new TreeMap<OperatingSystemPattern, OperatingSystem>();
    patterns4.put(pattern4, operatingSystem);

    final Data data1 = new DataBlueprint().patternToOperatingSystemMap(patterns1).build();
    final Data data2 = new DataBlueprint().patternToOperatingSystemMap(patterns2).build();
    final Data data3 = new DataBlueprint().patternToOperatingSystemMap(patterns3).build();
    final Data data4 = new DataBlueprint().patternToOperatingSystemMap(patterns4).build();

    assertThat(data1.equals(data2)).isFalse();
    assertThat(data1.hashCode() == data2.hashCode()).isFalse();
    assertThat(data2.equals(data1)).isFalse();

    assertThat(data1.equals(data3)).isFalse();
    assertThat(data1.hashCode() == data3.hashCode()).isFalse();
    assertThat(data3.equals(data1)).isFalse();

    assertThat(data3.equals(data4)).isTrue();
    assertThat(data3.hashCode() == data4.hashCode()).isTrue();
    assertThat(data4.equals(data3)).isTrue();

    assertThat(data2.equals(data3)).isFalse();
    assertThat(data2.hashCode() == data3.hashCode()).isFalse();

    assertThat(data1.equals(data4)).isFalse();
    assertThat(data1.hashCode() == data4.hashCode()).isFalse();
  }

  @Test
  public void equals_different_operatingSystems() {
    final OperatingSystem os1 = createOperatingSystem(1);
    final OperatingSystem os2 = createOperatingSystem(2);
    final OperatingSystem os3 = createOperatingSystem(3);
    final Set<OperatingSystem> operatingSystems1 = new HashSet<OperatingSystem>();
    operatingSystems1.add(os1);
    operatingSystems1.add(os2);
    final Set<OperatingSystem> operatingSystems2 = new HashSet<OperatingSystem>();
    operatingSystems2.add(os1);
    operatingSystems2.add(os3);
    final Data data1 = new DataBlueprint().operatingSystems(operatingSystems1).build();
    final Data data2 = new DataBlueprint().operatingSystems(operatingSystems2).build();
    assertThat(data1.equals(data2)).isFalse();
    assertThat(data1.hashCode() == data2.hashCode()).isFalse();
  }

  @Test
  public void equals_different_robots() {
    final Robot robot1 = createRobot(1);
    final Robot robot2 = createRobot(2);
    final List<Robot> robots1 = new ArrayList<Robot>();
    robots1.add(robot1);
    robots1.add(robot2);
    final List<Robot> robots2 = new ArrayList<Robot>();
    robots2.add(robot1);
    final Data data1 = new DataBlueprint().robots(robots1).build();
    final Data data2 = new DataBlueprint().robots(robots2).build();
    assertThat(data1.equals(data2)).isFalse();
    assertThat(data1.hashCode() == data2.hashCode()).isFalse();
  }

  @Test
  public void equals_different_version() {
    final Data data1 = new DataBlueprint().version("v1").build();
    final Data data2 = new DataBlueprint().version("v2").build();
    assertThat(data1.equals(data2)).isFalse();
    assertThat(data1.hashCode() == data2.hashCode()).isFalse();
  }

  @Test
  public void equals_identical() {
    final Data data1 = new DataBlueprint().version("identical").build();
    final Data data2 = new DataBlueprint().version("identical").build();
    assertThat(data1.equals(data2)).isTrue();
    assertThat(data1.hashCode() == data2.hashCode()).isTrue();
  }

  @Test
  public void equals_null() {
    final Data data = new DataBlueprint().build();
    assertThat(data.equals(null)).isFalse();
  }

  @Test
  public void equals_otherClass() {
    final Data data = new DataBlueprint().build();
    final String otherClass = "";
    assertThat(data.equals(otherClass)).isFalse();
  }

  @Test
  public void equals_same() {
    final Data data = new DataBlueprint().version("same").build();
    assertThat(data.equals(data)).isTrue();
    assertThat(data.hashCode() == data.hashCode()).isTrue();
  }

}
TOP

Related Classes of net.sf.uadetector.internal.data.DataEqualsTest

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.