blob: 06e20fa4cb8fa19ae8fe9faa401efd9af10a4de1 [file] [log] [blame]
/*
* 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.gwt.dev.jjs.ast;
import com.google.gwt.dev.util.collect.Lists;
import junit.framework.TestCase;
import java.util.List;
/**
* Tests {@link JProgram#lastFragmentLoadingBefore(int, int...)}.
*/
public class JProgramLastFragmentLoadingBeforeTest extends TestCase {
public void testBasics() {
List<Integer> initialSeq = Lists.create(4, 3, 2);
int numSps = 10;
// Very simple
assertEquals(0, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 0,
1, 2, 3));
// Equal fragments load at the same time
assertEquals(0,
JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 0, 0));
assertEquals(1,
JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 1, 1));
assertEquals(3,
JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 3, 3));
assertEquals(6,
JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 6, 6));
assertEquals(11, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 11,
11));
// Zero loads first
assertEquals(0, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 11,
0));
assertEquals(0, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 10,
0));
assertEquals(0,
JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 3, 0));
// Initial sequence fragments load before all others
assertEquals(3, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 3,
10));
assertEquals(3, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 10,
3));
// Earlier initial sequence fragments load before the others
assertEquals(4, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 2,
3, 4));
assertEquals(3,
JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 2, 3));
assertEquals(4, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 4,
3, 2));
// For non-equal exclusive fragments, leftovers is the common predecessor
assertEquals(11, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 1,
7));
// Leftovers is before any exclusive
assertEquals(11, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 7,
11));
}
public void testWithEmptyInitial() {
List<Integer> initialSeq = Lists.create();
int numSps = 10;
// Simple case
assertEquals(0, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 0,
1, 2, 3));
// Equal fragments load at the same time
assertEquals(0,
JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 0, 0));
assertEquals(6,
JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 6, 6));
assertEquals(11, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 11,
11));
// Zero loads first
assertEquals(0, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 11,
0));
assertEquals(0, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 10,
0));
assertEquals(0,
JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 3, 0));
// For non-equal exclusive fragments, leftovers is the common predecessor
assertEquals(11, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 1,
7));
// Leftovers is before any exclusive
assertEquals(11, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 7,
11));
// With just one argument, return it
assertEquals(0, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 0));
assertEquals(3, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 3));
assertEquals(11, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 11));
}
public void testWithNoSplitPoints() {
List<Integer> initialSeq = Lists.create();
int numSps = 0;
assertEquals(0,
JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 0, 0));
assertEquals(0, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 0,
0, 0));
assertEquals(0, JProgram.lastFragmentLoadingBefore(initialSeq, numSps, 0));
}
}