--- /dev/null
+var test = require("tap").test
+
+var some = require("../some.js")
+
+test("some() doesn't find anything asynchronously", function (t) {
+ some(["a", "b", "c", "d", "e", "f", "g"], predicate, function (error, match) {
+ t.ifError(error, "ran successfully")
+
+ t.notOk(match, "nothing to find, so nothing found")
+
+ t.end()
+ })
+
+ function predicate(value, cb) {
+ // dezalgo ensures it's safe to not do this, but just in case
+ setTimeout(function () { cb(null, value > "j" && value) })
+ }
+})
+
+test("some() doesn't find anything synchronously", function (t) {
+ some(["a", "b", "c", "d", "e", "f", "g"], predicate, function (error, match) {
+ t.ifError(error, "ran successfully")
+
+ t.notOk(match, "nothing to find, so nothing found")
+
+ t.end()
+ })
+
+ function predicate(value, cb) {
+ cb(null, value > "j" && value)
+ }
+})
+
+test("some() doesn't find anything asynchronously", function (t) {
+ some(["a", "b", "c", "d", "e", "f", "g"], predicate, function (error, match) {
+ t.ifError(error, "ran successfully")
+
+ t.equals(match, "d", "found expected element")
+
+ t.end()
+ })
+
+ function predicate(value, cb) {
+ setTimeout(function () { cb(null, value > "c" && value) })
+ }
+})
+
+test("some() doesn't find anything synchronously", function (t) {
+ some(["a", "b", "c", "d", "e", "f", "g"], predicate, function (error, match) {
+ t.ifError(error, "ran successfully")
+
+ t.equals(match, "d", "found expected")
+
+ t.end()
+ })
+
+ function predicate(value, cb) {
+ cb(null, value > "c" && value)
+ }
+})