Package juzu.impl.plugin.template

Source Code of juzu.impl.plugin.template.CompletionTestCase

/*
* Copyright 2013 eXo Platform SAS
*
* 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 juzu.impl.plugin.template;

import juzu.impl.common.Tools;
import juzu.impl.compiler.ElementHandle;
import juzu.processor.MainProcessor;
import juzu.test.AbstractTestCase;
import juzu.test.CompilerAssert;
import org.junit.Test;

import javax.annotation.processing.Completion;
import javax.annotation.processing.RoundEnvironment;
import javax.lang.model.element.AnnotationMirror;
import javax.lang.model.element.ExecutableElement;
import javax.lang.model.element.TypeElement;
import javax.lang.model.element.VariableElement;
import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;
import java.util.concurrent.atomic.AtomicInteger;

/** @author <a href="mailto:julien.viet@exoplatform.com">Julien Viet</a> */
public class CompletionTestCase extends AbstractTestCase {

  @Test
  public void testComplete() {
    CompilerAssert<File, File> compiler = compiler("plugin.template.completion");
    compiler.assertCompile();
    String[][] tests = {
        { "", "bar.gtmpl", "folder/", "foo1.gtmpl", "foo2.gtmpl"},
        { "b", "bar.gtmpl"},
        { "fo", "folder/", "foo1.gtmpl", "foo2.gtmpl"},
        { "foo", "foo1.gtmpl", "foo2.gtmpl"},
        { "foo1", "foo1.gtmpl"},
        { "folder", "folder/juu1.gtmpl", "folder/juu2.gtmpl", "folder/nested/"},
        { "folder/", "folder/juu1.gtmpl", "folder/juu2.gtmpl", "folder/nested/"},
        { "folder/juu", "folder/juu1.gtmpl", "folder/juu2.gtmpl"},
        { "folder/nes", "folder/nested/"},
        { "folder/nested", "folder/nested/daa1.gtmpl", "folder/nested/daa2.gtmpl"},
    };
    final ArrayList<String> completions = new ArrayList<String>();
    final AtomicInteger count = new AtomicInteger();
    for (final String[] test : tests) {
      compiler.with(new MainProcessor() {
        @Override
        protected void doProcess(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
          if (count.getAndIncrement() == 0) {
            ElementHandle.Field index = ElementHandle.Field.create("plugin.template.completion.A", "index");
            VariableElement indexElt = index.get(processingEnv);
            AnnotationMirror pathAnn = indexElt.getAnnotationMirrors().get(0);
            TypeElement annotationTypeElement = (TypeElement)pathAnn.getAnnotationType().asElement();
            ExecutableElement value = (ExecutableElement)annotationTypeElement.getEnclosedElements().get(0);
            for (Completion completion : getCompletions(indexElt, pathAnn, value, test[0])) {
              completions.add(completion.getValue());
            }
          }
        }
      });
      compiler.assertCompile();
      List<String> expected = Arrays.asList(test).subList(1, test.length);
      assertEquals(
          "Was expecting completion of <" + test[0] + "> to be " + expected + " instead of " + completions,
          expected,
          completions);
      count.set(0);
      completions.clear();
    }
  }
}
TOP

Related Classes of juzu.impl.plugin.template.CompletionTestCase

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.