PathrockNetwork Gno Explorer
HomeBlocksTransactionsRealmsPackagesValidatorsAnalytics

PathrockNetwork Gno Explorer — an independent explorer for Gno.land Mainnet (gnoland-1), operated by PathrockNetwork. Not an official Gno.land service.

gnowebarchive RPC

gno.land/p/moul/fifo/v0

Package
Open in gnoweb ↗

Overview

Kind
Pure package
Name
v0
Namespace
moul / fifo
Files
3 (gnomod.toml)
Exported functions
n/a — not supported for pure packages by the node (vm/qfuncs)
Module
gno.land/p/moul/fifo/v0
gno
0.9

Files (3)

  • gnomod.tomltoml
  • fifo.gnogno
  • fifo_test.gnogno
fifo_test.gnogno
1package fifo23import (4	"testing"56	"gno.land/p/nt/uassert/v0"7)89func TestNew(t *testing.T) {10	l := New(5)11	uassert.Equal(t, 5, l.MaxSize())12	uassert.Equal(t, 0, l.Size())13}1415func TestAppend(t *testing.T) {16	l := New(3)1718	// Test adding within capacity19	l.Append(1)20	l.Append(2)21	uassert.Equal(t, 2, l.Size())22	uassert.Equal(t, 1, l.Get(0))23	uassert.Equal(t, 2, l.Get(1))2425	// Test overflow behavior26	l.Append(3)27	l.Append(4)28	uassert.Equal(t, 3, l.Size())29	uassert.Equal(t, 2, l.Get(0))30	uassert.Equal(t, 3, l.Get(1))31	uassert.Equal(t, 4, l.Get(2))32}3334func TestPrepend(t *testing.T) {35	l := New(3)3637	// Test adding within capacity38	l.Prepend(1)39	l.Prepend(2)40	uassert.Equal(t, 2, l.Size())41	uassert.Equal(t, 2, l.Get(0))42	uassert.Equal(t, 1, l.Get(1))4344	// Test overflow behavior45	l.Prepend(3)46	l.Prepend(4)47	uassert.Equal(t, 3, l.Size())48	uassert.Equal(t, 4, l.Get(0))49	uassert.Equal(t, 3, l.Get(1))50	uassert.Equal(t, 2, l.Get(2))51}5253func TestGet(t *testing.T) {54	l := New(3)55	l.Append(1)56	l.Append(2)57	l.Append(3)5859	// Test valid indices60	uassert.Equal(t, 1, l.Get(0))61	uassert.Equal(t, 2, l.Get(1))62	uassert.Equal(t, 3, l.Get(2))6364	// Test invalid indices65	uassert.True(t, l.Get(-1) == nil)66	uassert.True(t, l.Get(3) == nil)67}6869func TestEntries(t *testing.T) {70	l := New(3)71	l.Append(1)72	l.Append(2)73	l.Append(3)7475	entries := l.Entries()76	uassert.Equal(t, 3, len(entries))77	uassert.Equal(t, 1, entries[0])78	uassert.Equal(t, 2, entries[1])79	uassert.Equal(t, 3, entries[2])80}8182func TestLatest(t *testing.T) {83	l := New(5)8485	// Test empty list86	uassert.True(t, l.Latest() == nil)8788	// Test single entry89	l.Append(1)90	uassert.Equal(t, 1, l.Latest())9192	// Test multiple entries93	l.Append(2)94	l.Append(3)95	uassert.Equal(t, 3, l.Latest())9697	// Test after overflow98	l.Append(4)99	l.Append(5)100	l.Append(6)101	uassert.Equal(t, 6, l.Latest())102}103104func TestIterator(t *testing.T) {105	l := New(3)106	l.Append(1)107	l.Append(2)108	l.Append(3)109110	iter := l.Iterator()111	uassert.Equal(t, 1, iter())112	uassert.Equal(t, 2, iter())113	uassert.Equal(t, 3, iter())114	uassert.True(t, iter() == nil)115}116117func TestMixedOperations(t *testing.T) {118	l := New(3)119120	// Mix of append and prepend operations121	l.Append(1)  // [1]122	l.Prepend(2) // [2,1]123	l.Append(3)  // [2,1,3]124	l.Prepend(4) // [4,2,1]125126	entries := l.Entries()127	uassert.Equal(t, 3, len(entries))128	uassert.Equal(t, 4, entries[0])129	uassert.Equal(t, 2, entries[1])130	uassert.Equal(t, 1, entries[2])131}132133func TestEmptyList(t *testing.T) {134	l := New(3)135136	// Test operations on empty list137	uassert.Equal(t, 0, l.Size())138	uassert.True(t, l.Get(0) == nil)139	uassert.Equal(t, 0, len(l.Entries()))140	uassert.True(t, l.Latest() == nil)141142	iter := l.Iterator()143	uassert.True(t, iter() == nil)144}145146func TestEdgeCases(t *testing.T) {147	// Test zero-size list148	l := New(0)149	uassert.Equal(t, 0, l.MaxSize())150	l.Append(1) // Should be no-op151	uassert.Equal(t, 0, l.Size())152153	// Test single-element list154	l = New(1)155	l.Append(1)156	l.Append(2) // Should replace 1157	uassert.Equal(t, 1, l.Size())158	uassert.Equal(t, 2, l.Latest())159160	// Test rapid append/prepend alternation161	l = New(3)162	l.Append(1)  // [1]163	l.Prepend(2) // [2,1]164	l.Append(3)  // [2,1,3]165	l.Prepend(4) // [4,2,1]166	l.Append(5)  // [2,1,5]167	uassert.Equal(t, 3, l.Size())168	entries := l.Entries()169	uassert.Equal(t, 2, entries[0])170	uassert.Equal(t, 1, entries[1])171	uassert.Equal(t, 5, entries[2])172173	// Test nil values174	l = New(2)175	l.Append(nil)176	l.Prepend(nil)177	uassert.Equal(t, 2, l.Size())178	uassert.True(t, l.Get(0) == nil)179	uassert.True(t, l.Get(1) == nil)180181	// Test index bounds182	l = New(3)183	l.Append(1)184	uassert.True(t, l.Get(-1) == nil)185	uassert.True(t, l.Get(1) == nil)186187	// Test iterator exhaustion188	l = New(2)189	l.Append(1)190	l.Append(2)191	iter := l.Iterator()192	uassert.Equal(t, 1, iter())193	uassert.Equal(t, 2, iter())194	uassert.True(t, iter() == nil)195	uassert.True(t, iter() == nil)196197	// Test prepend on full list198	l = New(2)199	l.Append(1)200	l.Append(2)  // [1,2]201	l.Prepend(3) // [3,1]202	uassert.Equal(t, 2, l.Size())203	entries = l.Entries()204	uassert.Equal(t, 3, entries[0])205	uassert.Equal(t, 1, entries[1])206}207208func TestSetMaxSize(t *testing.T) {209	l := New(5)210211	// Fill the list212	l.Append(1)213	l.Append(2)214	l.Append(3)215	l.Append(4)216	l.Append(5)217218	// Test increasing maxSize219	l.SetMaxSize(7)220	uassert.Equal(t, 7, l.MaxSize())221	uassert.Equal(t, 5, l.Size())222223	// Test reducing maxSize224	l.SetMaxSize(3)225	uassert.Equal(t, 3, l.Size())226	entries := l.Entries()227	uassert.Equal(t, 3, entries[0])228	uassert.Equal(t, 4, entries[1])229	uassert.Equal(t, 5, entries[2])230231	// Test setting to zero232	l.SetMaxSize(0)233	uassert.Equal(t, 0, l.Size())234	uassert.True(t, l.head == nil)235	uassert.True(t, l.tail == nil)236237	// Test negative maxSize238	l.SetMaxSize(-1)239	uassert.Equal(t, 0, l.MaxSize())240241	// Test setting back to positive242	l.SetMaxSize(2)243	l.Append(1)244	l.Append(2)245	l.Append(3)246	uassert.Equal(t, 2, l.Size())247	entries = l.Entries()248	uassert.Equal(t, 2, entries[0])249	uassert.Equal(t, 3, entries[1])250}251252func TestDelete(t *testing.T) {253	l := New(5)254255	// Test delete on empty list256	uassert.False(t, l.Delete(0))257	uassert.False(t, l.Delete(-1))258259	// Fill list260	l.Append(1)261	l.Append(2)262	l.Append(3)263	l.Append(4)264265	// Test invalid indices266	uassert.False(t, l.Delete(-1))267	uassert.False(t, l.Delete(4))268269	// Test deleting from middle270	uassert.True(t, l.Delete(1))271	uassert.Equal(t, 3, l.Size())272	entries := l.Entries()273	uassert.Equal(t, 1, entries[0])274	uassert.Equal(t, 3, entries[1])275	uassert.Equal(t, 4, entries[2])276277	// Test deleting from head278	uassert.True(t, l.Delete(0))279	uassert.Equal(t, 2, l.Size())280	entries = l.Entries()281	uassert.Equal(t, 3, entries[0])282	uassert.Equal(t, 4, entries[1])283284	// Test deleting from tail285	uassert.True(t, l.Delete(1))286	uassert.Equal(t, 1, l.Size())287	uassert.Equal(t, 3, l.Latest())288289	// Test deleting last element290	uassert.True(t, l.Delete(0))291	uassert.Equal(t, 0, l.Size())292	uassert.True(t, l.head == nil)293	uassert.True(t, l.tail == nil)294}295

Functions

not supported for pure packages by the node (vm/qfuncs)

Signatures reconstructed verbatim from vm/qfuncs — interface params keep their inline definitions.