Package com.google.test.metric.report.issues

Source Code of com.google.test.metric.report.issues.TriageIssuesQueueTest

/*
* Copyright 2009 Google Inc.
*
* 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 com.google.test.metric.report.issues;

import java.util.Iterator;
import java.util.List;

import junit.framework.TestCase;

import com.google.test.metric.SourceLocation;

/**
* Tests for {@link TriageIssuesQueue}
*
* @author alexeagle@google.com (Alex Eagle)
*/
public class TriageIssuesQueueTest extends TestCase {
  TriageIssuesQueue<ClassIssues> queue;
  private final int maxExcellentCost = 50;
  private final int maxOffenders = 10;
  private Issue issue;

  @Override
  protected void setUp() throws Exception {
    super.setUp();
    queue = new TriageIssuesQueue<ClassIssues>(maxExcellentCost, maxOffenders,
        new ClassIssues.TotalCostComparator());
    issue = new Issue(new SourceLocation(null, 1), null, 1f, null, null);
  }

  public void testEmptyClassIssuesAreDiscarded() throws Exception {
    queue.offer(new ClassIssues("foo", 0));
    assertTrue(queue.isEmpty());
  }

  public void testNonEmptyClassIssuesAreAdded() throws Exception {
    ClassIssues classIssues = new ClassIssues("FooClass", 100);
    classIssues.add(issue);
    queue.offer(classIssues);
    assertEquals(classIssues, queue.peek());
  }

  public void testAsListMethodGivesOrderedIterator() throws Exception {
    ClassIssues class1Issues = new ClassIssues("FooClass", 100);
    ClassIssues class2Issues = new ClassIssues("FooClass", 200);
    ClassIssues class3Issues = new ClassIssues("FooClass", 300);
    class1Issues.add(issue);
    class2Issues.add(issue);
    class3Issues.add(issue);
    queue.offer(class1Issues);
    queue.offer(class3Issues);
    queue.offer(class2Issues);
    Iterator<ClassIssues> iter = queue.asList().iterator();
    assertEquals(class3Issues, iter.next());
    assertEquals(class2Issues, iter.next());
    assertEquals(class1Issues, iter.next());
  }

  public void testOnlyMaxOffendersAreRetained() throws Exception {
    for (int count = 0; count <= maxOffenders; count++) {
      ClassIssues class1Issues = new ClassIssues("FooClass", 100);
      class1Issues.add(issue);
      queue.offer(class1Issues);
    }
    assertEquals(maxOffenders, queue.size());
  }

  public void testOnlyNonExcellentClassesAreRetained() throws Exception {
    ClassIssues class1Issues = new ClassIssues("FooClass", maxExcellentCost - 1);
    class1Issues.add(issue);
    queue.offer(class1Issues);
    assertTrue(queue.isEmpty());
  }

  public void testQueueWorksWithIssuesAlso() throws Exception {
    Issue issue = new Issue(new SourceLocation(null, 1), null, 1f, null, null);
    TriageIssuesQueue<Issue> issueQueue = new TriageIssuesQueue<Issue>(.5f, 20,
        new Issue.TotalCostComparator());
    issueQueue.offer(issue);
    assertFalse(issueQueue.isEmpty());
    List<Issue> list = issueQueue.asList();
    assertEquals(issue, list.get(0));
  }

  public void testLastItemAddedMustHaveHighPriority() throws Exception {
    TriageIssuesQueue<ClassIssues> smallQueue = new TriageIssuesQueue<ClassIssues>(100, 1,
        new ClassIssues.TotalCostComparator());
    ClassIssues class1Issues = new ClassIssues("BadClass", 500);
    class1Issues.add(issue);
    smallQueue.offer(class1Issues);
    ClassIssues class2Issues = new ClassIssues("PrettyGoodClass", 101);
    class2Issues.add(issue);
    smallQueue.offer(class2Issues);

    assertEquals("BadClass", smallQueue.asList().get(0).getClassName());
  }

  public void testLastItemDoesPushOutLowerPriority() throws Exception {
    TriageIssuesQueue<ClassIssues> smallQueue = new TriageIssuesQueue<ClassIssues>(100, 2,
        new ClassIssues.TotalCostComparator());
    ClassIssues class1Issues = new ClassIssues("BadClass", 500);
    ClassIssues class2Issues = new ClassIssues("PrettyGoodClass", 200);
    ClassIssues class3Issues = new ClassIssues("NotGreatClass", 300);
    class1Issues.add(issue);
    class2Issues.add(issue);
    class3Issues.add(issue);
    smallQueue.offer(class1Issues);
    smallQueue.offer(class2Issues);
    smallQueue.offer(class3Issues);

    assertEquals("BadClass", smallQueue.asList().get(0).getClassName());
    assertEquals("NotGreatClass", smallQueue.asList().get(1).getClassName());
  }
}
TOP

Related Classes of com.google.test.metric.report.issues.TriageIssuesQueueTest

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.