Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings
This repository was archived by the owner on Sep 1, 2025. It is now read-only.
Open more actions menu

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

13 Commits
13 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

pava

Parameterized tests for ava!

Install

$ npm i pava

Usage

import test from 'ava'
import parameterized from 'pava'
import { mySerialize, myDeserialize, myMax } from './my-code.js'

// Writing your test like this...
parameterized(
  test,
  `integer serializing and deserializing`,
  {
    zero: 0,
    negative: -4,
    positive: 5,
    large: 100000,
  },
  (t, integer) => {
    t.is(myDeserialize(mySerialize(integer)), integer)
  },
)

// Is the same as writing it like this!
test(`integer serializing and deserializing - zero`, t => {
  t.is(myDeserialize(mySerialize(0)), 0)
})
test(`integer serializing and deserializing - negative`, t => {
  t.is(myDeserialize(mySerialize(-4)), -4)
})
test(`integer serializing and deserializing - positive`, t => {
  t.is(myDeserialize(mySerialize(5)), 5)
})
test(`integer serializing and deserializing - large`, t => {
  t.is(myDeserialize(mySerialize(100000)), 100000)
})

// And writing your test like this...
parameterized(
  test,
  `integer serializing and deserializing`,
  [0, -4, 5, 100000],
  (t, integer) => {
    t.is(myDeserialize(mySerialize(integer)), integer)
  },
)

// Is the same as writing it like this!
// Note: the titles aren't as nice for large test case objects
test(`integer serializing and deserializing - 0`, t => {
  t.is(myDeserialize(mySerialize(0)), 0)
})
test(`integer serializing and deserializing - -4`, t => {
  t.is(myDeserialize(mySerialize(-4)), -4)
})
test(`integer serializing and deserializing - 5`, t => {
  t.is(myDeserialize(mySerialize(5)), 5)
})
test(`integer serializing and deserializing - 100000`, t => {
  t.is(myDeserialize(mySerialize(100000)), 100000)
})

// Destructure object literals to test functions with multiple parameters!
parameterized(
  test,
  `maximum of two integers`,
  {
    sameInteger: { first: 2, second: 2, expected: 2 },
    twoPositive: { first: 2, second: 3, expected: 3 },
    onePositiveOneNegative: { first: 2, second: -3, expected: 2 },
    twoNegative: { first: -2, second: -3, expected: -2 },
  },
  (t, { first, second, expected }) => {
    t.is(myMax(first, second), expected)
  },
)

// You can also use any ava test interface!
parameterized(test.serial /* ... */)
parameterized(test.failing /* ... */)
parameterized(test.only /* ... */)
parameterized(test.skip /* ... */)
parameterized(test.todo /* ... */)
// etc.

See the type definitions for more documentation.

Contributing

Stars are always welcome!

For bugs and feature requests, please create an issue.

For pull requests, please read the contributing guidelines.

License

Apache 2.0

This is not an official Google product.

Releases

Sponsor this project

Used by

Contributors

Languages

Morty Proxy This is a proxified and sanitized view of the page, visit original site.