content: // Copyright (c) 2011-present, Facebook, Inc.  All rights reserved.
  //  This source code is licensed under both the GPLv2 (found in the
  //  COPYING file in the root directory) and Apache 2.0 License
  //  (found in the LICENSE.Apache file in the root directory).
  package org.rocksdb;
  
  import org.junit.ClassRule;
  import org.junit.Test;
  
  import static org.assertj.core.api.Assertions.assertThat;
  
  public class SliceTest {
  
    @ClassRule
    public static final RocksMemoryResource rocksMemoryResource =
        new RocksMemoryResource();
  
    @Test
    public void slice() {
      try (final Slice slice = new Slice("testSlice")) {
        assertThat(slice.empty()).isFalse();
        assertThat(slice.size()).isEqualTo(9);
        assertThat(slice.data()).isEqualTo("testSlice".getBytes());
      }
  
      try (final Slice otherSlice = new Slice("otherSlice".getBytes())) {
        assertThat(otherSlice.data()).isEqualTo("otherSlice".getBytes());
      }
  
      try (final Slice thirdSlice = new Slice("otherSlice".getBytes(), 5)) {
        assertThat(thirdSlice.data()).isEqualTo("Slice".getBytes());
      }
    }
  
    @Test
    public void sliceClear() {
      try (final Slice slice = new Slice("abc")) {
        assertThat(slice.toString()).isEqualTo("abc");
        slice.clear();
        assertThat(slice.toString()).isEmpty();
        slice.clear();  // make sure we don't double-free
      }
    }
  
    @Test
    public void sliceRemovePrefix() {
      try (final Slice slice = new Slice("abc")) {
        assertThat(slice.toString()).isEqualTo("abc");
        slice.removePrefix(1);
        assertThat(slice.toString()).isEqualTo("bc");
      }
    }
  
    @Test
    public void sliceEquals() {
      try (final Slice slice = new Slice("abc");
           final Slice slice2 = new Slice("abc")) {
        assertThat(slice.equals(slice2)).isTrue();
        assertThat(slice.hashCode() == slice2.hashCode()).isTrue();
      }
    }
  
    @Test
    public void sliceStartWith() {
      try (final Slice slice = new Slice("matchpoint");
           final Slice match = new Slice("mat");
           final Slice noMatch = new Slice("nomatch")) {
        assertThat(slice.startsWith(match)).isTrue();
        assertThat(slice.startsWith(noMatch)).isFalse();
      }
    }
  
    @Test
    public void sliceToString() {
      try (final Slice slice = new Slice("stringTest")) {
        assertThat(slice.toString()).isEqualTo("stringTest");
        assertThat(slice.toString(true)).isNotEqualTo("");
      }
    }
  }
  