/*
 *      Copyright (C) 2012, 2016  higherfrequencytrading.com
 *      Copyright (C) 2016 Roman Leventov
 *
 *      This program is free software: you can redistribute it and/or modify
 *      it under the terms of the GNU Lesser General Public License as published by
 *      the Free Software Foundation, either version 3 of the License.
 *
 *      This program is distributed in the hope that it will be useful,
 *      but WITHOUT ANY WARRANTY; without even the implied warranty of
 *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *      GNU Lesser General Public License for more details.
 *
 *      You should have received a copy of the GNU Lesser General Public License
 *      along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

package eg;

import com.google.common.io.ByteStreams;
import net.openhft.chronicle.core.io.Closeable;
import net.openhft.chronicle.core.values.IntValue;
import net.openhft.chronicle.map.ChronicleMap;
import net.openhft.chronicle.map.MapDiagnostics;
import net.openhft.chronicle.values.Values;
import org.junit.Test;

import java.io.IOException;
import java.io.InputStream;
import java.util.Arrays;
import java.util.zip.GZIPInputStream;

import static java.nio.charset.StandardCharsets.UTF_8;

public class WordCountTest {

    static String[] words;
    static int expectedSize;
    static {
        try {
            // english version of war and peace ->  ascii
            ClassLoader cl = Thread.currentThread().getContextClassLoader();
            InputStream zippedIS = cl.getResourceAsStream("war_and_peace.txt.gz");
            GZIPInputStream binaryIS = new GZIPInputStream(zippedIS);
            String fullText =
                    new String(ByteStreams.toByteArray(binaryIS), UTF_8);
            words = fullText.split("\\s+");
            expectedSize = (int) Arrays.stream(words).distinct().count();
        } catch (IOException e) {
            throw new RuntimeException(e);
        }
    }

    @Test
    public void wordCountTest() throws IOException {
        try (ChronicleMap<CharSequence, IntValue> map = ChronicleMap
                .of(CharSequence.class, IntValue.class)
                .averageKeySize(7) // average word is 7 ascii bytes long (text in english)
                .entries(expectedSize)
                .create()) {
            IntValue v = Values.newNativeReference(IntValue.class);
            for (String word : words) {
                try (Closeable ignored = map.acquireContext(word, v)) {
                    v.addValue(1);
                }
            }
            MapDiagnostics.printMapStats(map);
        }
    }
}


@@ -981,57 +981,8 @@
 ap;%0A
-import net.openhft.chronicle.map.MapDiagnostics;%0A
 impo
@@ -2536,55 +2536,8 @@
   %7D%0A
-            MapDiagnostics.printMapStats(map);%0A
     

remove debug logging from test