Skip to content
Merged
Show file tree
Hide file tree
Changes from 7 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 0 additions & 7 deletions src/Array.mo
Original file line number Diff line number Diff line change
Expand Up @@ -297,11 +297,4 @@ module {
});
};

public func buffer<A>(xs : [A]) : Buffer.Buffer<A> {
let buff = Buffer.Buffer<A>(xs.size());
for (x in xs.vals()) {
buff.add(x)
};
buff
};
}
17 changes: 17 additions & 0 deletions src/Buffer.mo
Original file line number Diff line number Diff line change
Expand Up @@ -146,4 +146,21 @@ module {
};
};

/// Creates a buffer from immutable array elements.
public func fromArray<X>(elems : [X]) : Buffer<X> {
let buff = Buffer<X>(elems.size());
for (elem in elems.vals()) {
buff.add(elem)
};
buff
};

/// Creates a buffer from mutable array elements.
public func fromArrayMut<X>(elems : [var X]) : Buffer<X> {
let buff = Buffer<X>(elems.size());
for (elem in elems.vals()) {
buff.add(elem)
};
buff
};
}
5 changes: 0 additions & 5 deletions test/arrayTest.mo
Original file line number Diff line number Diff line change
Expand Up @@ -216,11 +216,6 @@ let suite = Suite.suite("Array", [
"reverse",
Array.reverse<Nat>([0, 1, 2, 3]),
M.equals(T.array<Nat>(T.natTestable, [3, 2, 1, 0]))
),
Suite.test(
"buffer",
Array.buffer<Nat>([0, 1, 2, 3]).toArray(),
M.equals(T.array<Nat>(T.natTestable, [0, 1, 2, 3]))
)
]);

Expand Down
19 changes: 19 additions & 0 deletions test/bufTest.mo
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,10 @@ import B "mo:base/Buffer";
import I "mo:base/Iter";
import O "mo:base/Option";

import Suite "mo:matchers/Suite";
import T "mo:matchers/Testable";
import M "mo:matchers/Matchers";

// test repeated growing
let a = B.Buffer<Nat>(3);
for (i in I.range(0, 123)) {
Expand Down Expand Up @@ -92,3 +96,18 @@ do {
assert (c.toArray().size() == 2);
assert (c.toVarArray().size() == 2);
};

let {run;test;suite} = Suite;
run(suite("array",
[
test(
"fromArray",
B.fromArray<Nat>([0, 1, 2, 3]).toArray(),
M.equals(T.array<Nat>(T.natTestable, [0, 1, 2, 3]))
),
test(
"fromArrayMut",
B.fromArrayMut<Nat>([var 0, 1, 2, 3]).toArray(),
M.equals(T.array<Nat>(T.natTestable, [0, 1, 2, 3]))
)
]));