1/*
2 * Copyright (C) 2009 The Guava Authors
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17package com.google.common.collect.testing.testers;
18
19import com.google.common.annotations.GwtCompatible;
20import com.google.gwt.core.client.GWT;
21
22/**
23 * The emulation source used in GWT.
24 *
25 * @author Hayward Chan
26 */
27@GwtCompatible(emulated = true)
28final class Platform {
29
30  // Use fewer steps in the ListIteratorTester in ListListIteratorTester because it's slow in prod
31  // mode.
32  static int listListIteratorTesterNumIterations() {
33    // TODO(hhchan): It's 4 in java.  Figure out why even 3 is too slow in prod mode.
34    return GWT.isProdMode() ? 2 : 4;
35  }
36
37  // Use fewer steps in the IteratorTester in CollectionIteratorTester because it's slow in prod
38  // mode..
39  static int collectionIteratorTesterNumIterations() {
40    return GWT.isProdMode() ? 3 : 5;
41  }
42
43  // TODO: Consolidate different copies in one single place.
44  static String format(String template, Object... args) {
45    // start substituting the arguments into the '%s' placeholders
46    StringBuilder builder = new StringBuilder(
47        template.length() + 16 * args.length);
48    int templateStart = 0;
49    int i = 0;
50    while (i < args.length) {
51      int placeholderStart = template.indexOf("%s", templateStart);
52      if (placeholderStart == -1) {
53        break;
54      }
55      builder.append(template.substring(templateStart, placeholderStart));
56      builder.append(args[i++]);
57      templateStart = placeholderStart + 2;
58    }
59    builder.append(template.substring(templateStart));
60
61    // if we run out of placeholders, append the extra args in square braces
62    if (i < args.length) {
63      builder.append(" [");
64      builder.append(args[i++]);
65      while (i < args.length) {
66        builder.append(", ");
67        builder.append(args[i++]);
68      }
69      builder.append("]");
70    }
71
72    return builder.toString();
73  }
74
75  private Platform() {}
76}
77