/******************************************************************************* * Copyright (c) 2011 Christian Trutz * 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: * Christian Trutz - initial API and implementation *******************************************************************************/ package org.eclipse.egit.github.core.tests; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; import org.eclipse.egit.github.core.SearchRepository; import org.junit.Test; import com.google.gson.Gson; import com.google.gson.GsonBuilder; /** * Unit tests of {@link SearchRepository} */ public class SearchRepositoryTest { private static final Gson gson = new GsonBuilder().setDateFormat( "yyyy-MM-dd").create(); /** * Test default state of search repository */ @Test public void defaultState() { SearchRepository repo = new SearchRepository("a", "b"); assertEquals("a/b", repo.generateId()); assertNull(repo.getCreatedAt()); assertNull(repo.getDescription()); assertEquals(0, repo.getForks()); assertNull(repo.getHomepage()); assertEquals("a/b", repo.getId()); assertNull(repo.getLanguage()); assertEquals("b", repo.getName()); assertEquals(0, repo.getOpenIssues()); assertEquals("a", repo.getOwner()); assertNull(repo.getPushedAt()); assertEquals(0, repo.getSize()); assertNull(repo.getUrl()); assertEquals(0, repo.getWatchers()); assertFalse(repo.isFork()); assertFalse(repo.isHasDownloads()); assertFalse(repo.isHasIssues()); assertFalse(repo.isHasWiki()); assertFalse(repo.isPrivate()); } /** * Verify search repository equality */ @Test public void equality() { SearchRepository repo1 = new SearchRepository("a", "b"); SearchRepository repo2 = new SearchRepository("a", "c"); SearchRepository repo3 = new SearchRepository("a", "b"); assertTrue(repo1.equals(repo1)); assertFalse(repo1.equals("repo1")); assertFalse(repo1.equals(repo2)); assertTrue(repo1.equals(repo3)); assertEquals(repo1.hashCode(), repo3.hashCode()); assertEquals(repo1.toString(), repo3.toString()); } /** * Create with null owner */ @Test(expected = IllegalArgumentException.class) public void createNullOwner() { new SearchRepository(null, "name"); } /** * Create with empty owner */ @Test(expected = IllegalArgumentException.class) public void createEmptyOwner() { new SearchRepository("", "name"); } /** * Create with null name */ @Test(expected = IllegalArgumentException.class) public void createNullName() { new SearchRepository("owner", null); } /** * Create with empty name */ @Test(expected = IllegalArgumentException.class) public void createEmptyName() { new SearchRepository("owner", ""); } /** * Verify repository with no generated id */ @Test public void noGeneratedId() { SearchRepository repo = gson.fromJson("{}", SearchRepository.class); assertNull(repo.generateId()); repo = gson.fromJson("{name:\"\", owner:\"use\"}", SearchRepository.class); assertNull(repo.generateId()); repo = gson.fromJson("{owner:\"\"}", SearchRepository.class); assertNull(repo.generateId()); } /** * Test non-mutable created at date */ @Test public void getCreatedAtReferenceMutableObject() { SearchRepository repository = gson.fromJson( "{createdAt : '2003-10-10'}", SearchRepository.class); repository.getCreatedAt().setTime(0); assertTrue(repository.getCreatedAt().getTime() != 0); } /** * Test non-mutable pushed at date */ @Test public void getPushedAtReferenceMutableObject() { SearchRepository repository = gson.fromJson( "{pushedAt : '2003-10-10'}", SearchRepository.class); repository.getPushedAt().setTime(0); assertTrue(repository.getPushedAt().getTime() != 0); } }