super_cache_testing 1.0.1 copy "super_cache_testing: ^1.0.1" to clipboard
super_cache_testing: ^1.0.1 copied to clipboard

Test utilities for super_cache. FakeCache and ManualClock for deterministic TTL and eviction tests without Future.delayed. Part of the super_cache family.

super_cache_testing #

pub package pub points Dart SDK License: MIT CI codecov Publisher

Test utilities for the super_cache family — FakeCache and ManualClock for writing fast, deterministic unit tests that cover TTL expiration without relying on Future.delayed.


Installation #

dev_dependencies:
  super_cache_testing: ^1.0.0

FakeCache #

A synchronous, in-memory Cache<K,V> with no eviction policy.

import 'package:super_cache_testing/super_cache_testing.dart';

final cache = FakeCache<String, int>();

cache.put('score', 42);
expect(cache.get('score'), 42);
expect(cache.puts, 1);
expect(cache.gets, 1); // hits + misses

Extras #

Member Description
puts Total put / putAll calls.
gets Total get calls (hits + misses).
metrics Standard CacheMetrics snapshot (hits, misses, evictions, …).
reset() Clears all entries and resets all counters. Use between test cases.

ManualClock #

An injectable time source. Pass it to FakeCache to control TTL expiration without wall-clock delays.

final clock = ManualClock();
final cache = FakeCache<String, int>(clock: clock);

cache.put('score', 42, ttl: const Duration(minutes: 5));
clock.advance(const Duration(minutes: 6));
expect(cache.get('score'), isNull); // expired

API #

ManualClock([DateTime? initial])  // defaults to 2024-01-01T00:00:00Z
void advance(Duration duration)   // move clock forward
void setTime(DateTime time)       // jump to absolute time
DateTime get now                  // current clock value

TTL test example #

test('cache entry expires after TTL', () {
  final clock = ManualClock();
  final cache = FakeCache<String, String>(clock: clock);

  cache.put('session', 'abc123', ttl: const Duration(hours: 1));
  expect(cache.get('session'), 'abc123');

  clock.advance(const Duration(hours: 1));
  expect(cache.get('session'), isNull); // expired at boundary
});

Reset between test cases #

final cache = FakeCache<String, int>();

setUp(() => cache.reset()); // clears entries + counters

test('first test', () {
  cache.put('k', 1);
  expect(cache.puts, 1);
});

test('second test', () {
  expect(cache.puts, 0); // counter was reset
});
1
likes
160
points
99
downloads

Publisher

verified publisherjihedmrouki.com

Weekly Downloads

Test utilities for super_cache. FakeCache and ManualClock for deterministic TTL and eviction tests without Future.delayed. Part of the super_cache family.

Repository (GitHub)
View/report issues

Topics

#cache #testing #mock

Documentation

API reference

License

MIT (license)

Dependencies

super_cache

More

Packages that depend on super_cache_testing