Package com.google.eclipse.protobuf.ui.contentassist

Source Code of com.google.eclipse.protobuf.ui.contentassist.IEObjectDescriptionChooser_shortestQualifiedNamesIn_Test

/*
* Copyright (c) 2011 Google Inc.
*
* All rights reserved. This program and the accompanying materials are made available under the terms of the Eclipse
* Public License v1.0 which accompanies this distribution, and is available at
*
* http://www.eclipse.org/legal/epl-v10.html
*/
package com.google.eclipse.protobuf.ui.contentassist;

import static java.util.Collections.emptyMap;

import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.mock;

import static com.google.common.collect.Lists.newArrayList;
import static com.google.eclipse.protobuf.ui.contentassist.IEObjectDescriptionsHaveNames.containOnly;

import java.util.Collection;
import java.util.List;
import java.util.Map;

import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtext.naming.QualifiedName;
import org.eclipse.xtext.resource.EObjectDescription;
import org.eclipse.xtext.resource.IEObjectDescription;
import org.junit.Before;
import org.junit.Test;

import com.google.eclipse.protobuf.protobuf.Message;

/**
* Tests for <code>{@link IEObjectDescriptionChooser#shortestQualifiedNamesIn(Collection)}</code>.
*
* @author alruiz@google.com (Alex Ruiz)
*/
public class IEObjectDescriptionChooser_shortestQualifiedNamesIn_Test {
  private List<IEObjectDescription> descriptions;
  private Map<String, String> userData;
  private IEObjectDescriptionChooser chooser;

  @Before public void setUp() {
    userData = emptyMap();
    chooser = new IEObjectDescriptionChooser();
    descriptions = newArrayList();
    describe(mock(Message.class), QualifiedName.create("com", "google", "test", "Phone"));
    describe(mock(Message.class), QualifiedName.create("com", "google", "test", "EMail"));
  }

  /*
   * Creates IEObjectDescriptions for the given EObject, one per segment in the given qualified name.
   *
   * Example:
   * Given the qualified name "com.google.test.Phone", this method will use these qualified names to create
   * IEObjectDescriptions:
   * - "Phone"
   * - "test.Phone"
   * - "google.test.Phone"
   * - "com.google.test.Phone"
   */
  private void describe(EObject e, QualifiedName name) {
    int count = name.getSegmentCount();
    List<String> segments = newArrayList();
    for (int i = count - 1; i >= 0; i--) {
      segments.add(0, name.getSegment(i));
      QualifiedName newName = QualifiedName.create(segments.toArray(new String[segments.size()]));
      descriptions.add(new EObjectDescription(newName, e, userData));
    }
  }

  @Test public void should_return_descriptions_with_shortest_QualifiedName() {
    Collection<IEObjectDescription> chosen = chooser.shortestQualifiedNamesIn(descriptions);
    assertThat(chosen, containOnly("EMail", "Phone"));
  }
}
TOP

Related Classes of com.google.eclipse.protobuf.ui.contentassist.IEObjectDescriptionChooser_shortestQualifiedNamesIn_Test

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.