hypercore 0.8.1

Secure, distributed, append-only log
Documentation
extern crate hypercore;

use hypercore::bitfield::{Bitfield, Change::*};

#[test]
fn set_and_get() {
  let mut b = Bitfield::new();

  assert_eq!(b.get(0), false);
  assert_eq!(b.set(0, true), Changed);
  assert_eq!(b.set(0, true), Unchanged);
  assert_eq!(b.get(0), true);

  assert_eq!(b.get(1424244), false);
  assert_eq!(b.set(1424244, true), Changed);
  assert_eq!(b.set(1424244, true), Unchanged);
  assert_eq!(b.get(1424244), true);
}

#[test]
fn get_total_positive_bits() {
  let mut b = Bitfield::new();

  assert_eq!(b.set(1, true), Changed);
  assert_eq!(b.set(2, true), Changed);
  assert_eq!(b.set(4, true), Changed);
  assert_eq!(b.set(5, true), Changed);
  assert_eq!(b.set(39, true), Changed);

  assert_eq!(b.total_with_range(0..4), 2);
  assert_eq!(b.total_with_range(3..4), 0);
  assert_eq!(b.total_with_range(3..5), 1);
  assert_eq!(b.total_with_range(3..40), 3);
  assert_eq!(b.total(), 5);
  assert_eq!(b.total_with_start(7), 1);
}