Package net.sf.uadetector.parser

Source Code of net.sf.uadetector.parser.AbstractUserAgentStringParserTest

package net.sf.uadetector.parser;

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

import java.net.URL;
import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.SortedMap;
import java.util.SortedSet;
import java.util.TreeMap;
import java.util.TreeSet;
import java.util.regex.Pattern;

import net.sf.uadetector.DeviceCategory;
import net.sf.uadetector.ReadableUserAgent;
import net.sf.uadetector.UserAgentFamily;
import net.sf.uadetector.UserAgentStringParser;
import net.sf.uadetector.datareader.DataReader;
import net.sf.uadetector.datastore.DataStore;
import net.sf.uadetector.internal.data.Data;
import net.sf.uadetector.internal.data.domain.Browser;
import net.sf.uadetector.internal.data.domain.BrowserOperatingSystemMapping;
import net.sf.uadetector.internal.data.domain.BrowserPattern;
import net.sf.uadetector.internal.data.domain.BrowserType;
import net.sf.uadetector.internal.data.domain.Device;
import net.sf.uadetector.internal.data.domain.DevicePattern;
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 net.sf.uadetector.internal.util.RegularExpressionConverter;

import org.junit.Test;

import com.google.common.collect.Maps;
import com.google.common.collect.Sets;

public class AbstractUserAgentStringParserTest {

  @Test
  public void examineAsBrowser_noMatchingSubGroupToGatherVersionNumber() {
    // create data structures
    final Set<Browser> browsers = new HashSet<Browser>();
    final Map<Integer, SortedSet<BrowserPattern>> browserPatterns = Maps.newHashMap();
    final Map<Integer, BrowserType> browserTypes = Maps.newHashMap();
    final SortedMap<BrowserPattern, Browser> patternToBrowserMap = new TreeMap<BrowserPattern, Browser>();
    final Set<BrowserOperatingSystemMapping> browserToOperatingSystemMappings = Sets.newHashSet();
    final Set<OperatingSystem> operatingSystems = new HashSet<OperatingSystem>();
    final Map<Integer, SortedSet<OperatingSystemPattern>> operatingSystemPatterns = Maps.newHashMap();
    final SortedMap<OperatingSystemPattern, OperatingSystem> patternToOperatingSystemMap = new TreeMap<OperatingSystemPattern, OperatingSystem>();
    final List<Robot> robots = new ArrayList<Robot>();
    final Set<Device> devices = new HashSet<Device>(0);
    final Map<Integer, SortedSet<DevicePattern>> devicePatterns = new HashMap<Integer, SortedSet<DevicePattern>>(0);
    final SortedMap<DevicePattern, Device> patternToDeviceMap = new TreeMap<DevicePattern, Device>();
    final String version = "test-version";

    // fill structures with data
    final TreeSet<BrowserPattern> browserPatternSet = Sets.newTreeSet();
    // a pattern without a subgroup definition to gather the version number
    final Pattern pattern = RegularExpressionConverter.convertPerlRegexToPattern("/^Eudora?/si ");
    final BrowserPattern browserPattern = new BrowserPattern(465, pattern, 439);
    browserPatternSet.add(browserPattern);
    browserPatterns.put(1, browserPatternSet);
    final BrowserType browserType = new BrowserType(2, "Browser");
    browserTypes.put(browserType.getId(), browserType);
    final Browser browser = new Browser(465, UserAgentFamily.EUDORA, "Eudora", new TreeSet<BrowserPattern>(), browserType, null,
        "eudora.png", "/list-of-ua/browser-detail?browser=Eudora", "Qualcomm Incorporated.", "http://www.qualcomm.com/",
        "http://www.eudora.com/archive.html");
    browsers.add(browser);
    patternToBrowserMap.put(browserPattern, browser);

    // create Data instance
    final Data data = new Data(browsers, browserPatterns, browserTypes, patternToBrowserMap, browserToOperatingSystemMappings,
        operatingSystems, operatingSystemPatterns, patternToOperatingSystemMap, robots, devices, devicePatterns,
        patternToDeviceMap, version);

    final UserAgentStringParser parser = new UserAgentStringParserImpl<DataStore>(new DataStore() {
      @Override
      public Charset getCharset() {
        return DataStore.DEFAULT_CHARSET;
      }

      @Override
      public Data getData() {
        return data;
      }

      @Override
      public DataReader getDataReader() {
        return null;
      }

      @Override
      public URL getDataUrl() {
        return null;
      }

      @Override
      public URL getVersionUrl() {
        return null;
      }
    });

    final ReadableUserAgent ua1 = parser.parse("Eudora");
    assertThat(ua1.getFamily()).isEqualTo(UserAgentFamily.EUDORA);
    assertThat(ua1.getVersionNumber().toVersionString()).isEqualTo("");
    assertThat(ua1.getDeviceCategory()).isEqualTo(DeviceCategory.EMPTY);

    final ReadableUserAgent ua2 = parser.parse("Eudora/1.0");
    assertThat(ua2.getFamily()).isEqualTo(UserAgentFamily.EUDORA);
    assertThat(ua2.getVersionNumber().toVersionString()).isEqualTo("");
    assertThat(ua2.getDeviceCategory()).isEqualTo(DeviceCategory.EMPTY);
  }

}
TOP

Related Classes of net.sf.uadetector.parser.AbstractUserAgentStringParserTest

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.