// Path: core/src/main/java/com/github/jeluard/stone/api/Consolidator.java
// public abstract class Consolidator {
// 
//   /**
//    * Accumulate a new value that will be considered for the consolidation process.
//    *
//    * @param timestamp
//    * @param value 
//    */
//   public abstract void accumulate(long timestamp, int value);
// 
//   /**
//    * Atomically compute consolidated value and reset itself for next consolidation cycle.
//    * <br />
//    * When called {@link #accumulate(long, int)} has been called at least once.
//    *
//    * @return result of consolidation of all values accumulated since last call
//    */
//   public final int consolidateAndReset() {
//     final int consolidate = consolidate();
//     reset();
//     return consolidate;
//   }
// 
//   /**
//    * Called right after {@link #consolidate()}.
//    */
//   protected abstract void reset();
// 
//   /**
//    * @return final consolidated value
//    */
//   protected abstract int consolidate();
// 
// }
// 
// Path: core/src/main/java/com/github/jeluard/stone/consolidator/MaxConsolidator.java
// public final class MaxConsolidator extends BaseStreamingConsolidator {
// 
//   @Override
//   protected int initialValue() {
//     return Integer.MIN_VALUE;
//   }
// 
//   @Override
//   public void accumulate(final long timestamp, final int value) {
//     //Not atomic but not needed.
//     if (value > getCurrentResult()) {
//       setCurrentResult(value);
//     }
//   }
// 
// }
// 
// Path: core/src/main/java/com/github/jeluard/stone/consolidator/MinConsolidator.java
// public final class MinConsolidator extends BaseStreamingConsolidator {
// 
//   @Override
//   protected int initialValue() {
//     return Integer.MAX_VALUE;
//   }
// 
//   @Override
//   public void accumulate(final long timestamp, final int value) {
//     //Not atomic but not needed.
//     if (value < getCurrentResult()) {
//       setCurrentResult(value);
//     }
//   }
// 
// }
// 
// Path: core/src/main/java/com/github/jeluard/stone/consolidator/Percentile90Consolidator.java
// public final class Percentile90Consolidator extends BasePercentileConsolidator {
// 
//   public Percentile90Consolidator(final int maxSamples) {
//     super(maxSamples, 90);
//   }
// 
// }


import com.github.jeluard.guayaba.test.AbstractHelperClassTest;
import com.github.jeluard.guayaba.test.junit.LoggerRule;
import com.github.jeluard.stone.api.Consolidator;
import com.github.jeluard.stone.consolidator.MaxConsolidator;
import com.github.jeluard.stone.consolidator.MinConsolidator;
import com.github.jeluard.stone.consolidator.Percentile90Consolidator;
import java.util.Arrays;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;
/**
 * Copyright 2012 Julien Eluard
 * This project includes software developed by Julien Eluard: https://github.com/jeluard/
 *
 * 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.github.jeluard.stone.helper;




public class ConsolidatorsTest extends AbstractHelperClassTest {

  static class ConsolidatorWithInvalidConstructor extends Consolidator {
    public ConsolidatorWithInvalidConstructor(float argument) {
    }
    @Override
    public void accumulate(long timestamp, int value) {
    }
    @Override
    protected int consolidate() {
      return 0;
    }
    @Override
    protected void reset() {
    }
  }

// Path: core/src/main/java/com/github/jeluard/stone/api/Consolidator.java
// public abstract class Consolidator {
// 
//   /**
//    * Accumulate a new value that will be considered for the consolidation process.
//    *
//    * @param timestamp
//    * @param value 
//    */
//   public abstract void accumulate(long timestamp, int value);
// 
//   /**
//    * Atomically compute consolidated value and reset itself for next consolidation cycle.
//    * <br />
//    * When called {@link #accumulate(long, int)} has been called at least once.
//    *
//    * @return result of consolidation of all values accumulated since last call
//    */
//   public final int consolidateAndReset() {
//     final int consolidate = consolidate();
//     reset();
//     return consolidate;
//   }
// 
//   /**
//    * Called right after {@link #consolidate()}.
//    */
//   protected abstract void reset();
// 
//   /**
//    * @return final consolidated value
//    */
//   protected abstract int consolidate();
// 
// }
// 
// Path: core/src/main/java/com/github/jeluard/stone/consolidator/MaxConsolidator.java
// public final class MaxConsolidator extends BaseStreamingConsolidator {
// 
//   @Override
//   protected int initialValue() {
//     return Integer.MIN_VALUE;
//   }
// 
//   @Override
//   public void accumulate(final long timestamp, final int value) {
//     //Not atomic but not needed.
//     if (value > getCurrentResult()) {
//       setCurrentResult(value);
//     }
//   }
// 
// }
// 
// Path: core/src/main/java/com/github/jeluard/stone/consolidator/MinConsolidator.java
// public final class MinConsolidator extends BaseStreamingConsolidator {
// 
//   @Override
//   protected int initialValue() {
//     return Integer.MAX_VALUE;
//   }
// 
//   @Override
//   public void accumulate(final long timestamp, final int value) {
//     //Not atomic but not needed.
//     if (value < getCurrentResult()) {
//       setCurrentResult(value);
//     }
//   }
// 
// }
// 
// Path: core/src/main/java/com/github/jeluard/stone/consolidator/Percentile90Consolidator.java
// public final class Percentile90Consolidator extends BasePercentileConsolidator {
// 
//   public Percentile90Consolidator(final int maxSamples) {
//     super(maxSamples, 90);
//   }
// 
// }


// Path: core/src/test/java/com/github/jeluard/stone/helper/ConsolidatorsTest.java
import com.github.jeluard.guayaba.test.AbstractHelperClassTest;
import com.github.jeluard.guayaba.test.junit.LoggerRule;
import com.github.jeluard.stone.api.Consolidator;
import com.github.jeluard.stone.consolidator.MaxConsolidator;
import com.github.jeluard.stone.consolidator.MinConsolidator;
import com.github.jeluard.stone.consolidator.Percentile90Consolidator;
import java.util.Arrays;
import org.junit.Assert;
import org.junit.Rule;
import org.junit.Test;

/**
 * Copyright 2012 Julien Eluard
 * This project includes software developed by Julien Eluard: https://github.com/jeluard/
 *
 * 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.github.jeluard.stone.helper;




public class ConsolidatorsTest extends AbstractHelperClassTest {

  static class ConsolidatorWithInvalidConstructor extends Consolidator {
    public ConsolidatorWithInvalidConstructor(float argument) {
    }
    @Override
    public void accumulate(long timestamp, int value) {
    }
    @Override
    protected int consolidate() {
      return 0;
    }
    @Override
    protected void reset() {
    }
  }

  static class ConsolidatorWithFailingConstructor extends Consolidator {