/*
* Copyright (C) 2014 Indeed 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.indeed.imhotep;
import com.indeed.imhotep.service.FTGSOutputStreamWriter;
import org.junit.Test;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import static org.junit.Assert.*;
/**
* @author dwahler
*/
public class TestFTGSRoundTrip {
@Test
public void testRoundTrip() throws Exception {
final long[] testStats = { -1, 0, 1, 127, 128, 129, -127, -128, -129,
Integer.MIN_VALUE, Integer.MAX_VALUE, 1000000000, -1000000000,
Long.MIN_VALUE, Long.MAX_VALUE, -1000000000000L, 1000000000000L };
for (long stat : testStats) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
FTGSOutputStreamWriter out = new FTGSOutputStreamWriter(baos);
out.switchField("foo", false);
out.switchBytesTerm("bar".getBytes(), 3, 0);
out.switchGroup(1);
out.addStat(stat);
out.close();
ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
//System.out.println(Utilz.toHex(baos.toByteArray()));
InputStreamFTGSIterator in = new InputStreamFTGSIterator(bais, 1);
assertTrue(in.nextField());
assertEquals("foo", in.fieldName());
assertTrue(in.nextTerm());
assertEquals("bar", in.termStringVal());
assertTrue(in.nextGroup());
assertEquals(1, in.group());
long[] buf = new long[1];
in.groupStats(buf);
assertEquals(stat, buf[0]);
}
}
}