/******************************************************************************* * Copyright (c) 2011 Sebastian Benz. * 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 * * Contributors: * Sebastian Benz - initial API and implementation ******************************************************************************/ package de.sebastianbenz.task.resource; import static com.google.common.collect.Iterables.transform; import static org.hamcrest.core.Is.is; import static org.junit.Assert.assertThat; import java.io.IOException; import org.eclipse.emf.ecore.resource.Resource; import org.eclipse.xtext.naming.QualifiedName; import org.eclipse.xtext.resource.IEObjectDescription; import org.eclipse.xtext.resource.IResourceDescription; import org.junit.Test; import com.google.common.base.Function; import com.google.common.base.Joiner; import com.google.inject.Inject; import de.sebastianbenz.task.TaskPackage; import de.sebastianbenz.task.util.AbstractTest; public class TaskResourceDescriptionTest extends AbstractTest{ @Inject IResourceDescription.Manager fixture; @Test public void shouldExportProjectsAndTasks() throws IOException { String input = "project:\n" + "- task \n" + "- task2 \n" + "note\n"; assertThat(resourceDescription(input), is("project, task, task2, note")); } @Test public void shouldExportTags() throws Exception { String input = "- task2 @done\n"; assertThat(resourceDescription(input), is("done, task2")); } @Test public void shouldStoreTagsInTaskUserData() throws Exception { String input = "- task2 @done\n"; assertThat(userDataOf(input, "task2"), is("done")); } private String userDataOf(String input, String name) { IResourceDescription resourceDescription = createResourceDescription(input); QualifiedName qualifiedName = QualifiedName.create(name); Iterable<IEObjectDescription> exportedObjects = resourceDescription.getExportedObjects(TaskPackage.Literals.TASK, qualifiedName , false); return exportedObjects.iterator().next().getUserData(Descriptions.TAG_KEY); } protected String resourceDescription(String input) throws IOException { IResourceDescription resourceDescription = createResourceDescription(input); return Joiner.on(", ").join(transform(resourceDescription.getExportedObjects(), new Function<IEObjectDescription, String>() { public String apply(IEObjectDescription description) { return description.getName().toString(); } })); } protected IResourceDescription createResourceDescription(String input) { Resource resource = taskResource(input); IResourceDescription resourceDescription = fixture.getResourceDescription(resource); return resourceDescription; } }