Files
Nim/tests
c-blake b1aa3b1eea Unwind just the "pseudorandom probing" part of recent sets,tables changes (#13816)
* Unwind just the "pseudorandom probing" (whole hash-code-keyed variable
stride double hashing) part of recent sets & tables changes (which has
still been causing bugs over a month later (e.g., two days ago
https://github.com/nim-lang/Nim/issues/13794) as well as still having
several "figure this out" implementation question comments in them (see
just diffs of this PR).

This topic has been discussed in many places:
  https://github.com/nim-lang/Nim/issues/13393
  https://github.com/nim-lang/Nim/pull/13418
  https://github.com/nim-lang/Nim/pull/13440
  https://github.com/nim-lang/Nim/issues/13794

Alternative/non-mandatory stronger integer hashes (or vice-versa opt-in
identity hashes) are a better solution that is more general (no illusion
of one hard-coded sequence solving all problems) while retaining the
virtues of linear probing such as cache obliviousness and age-less tables
under delete-heavy workloads (still untested after a month of this change).

The only real solution for truly adversarial keys is a hash keyed off of
data unobservable to attackers.  That all fits better with a few families
of user-pluggable/define-switchable hashes which can be provided in a
separate PR more about `hashes.nim`.

This PR carefully preserves the better (but still hard coded!) probing
of the  `intsets` and other recent fixes like `move` annotations, hash
order invariant tests, `intsets.missingOrExcl` fixing, and the move of
`rightSize` into `hashcommon.nim`.

* Fix `data.len` -> `dataLen` problem.
2020-03-31 19:18:45 +02:00
..
2017-07-25 09:28:23 +02:00
2020-01-13 14:11:51 +01:00
2019-09-27 07:02:54 +02:00
2020-03-30 13:18:12 +02:00
2020-03-30 13:18:12 +02:00
2020-03-30 13:18:12 +02:00
2020-03-30 13:18:12 +02:00
2019-05-25 07:33:33 +02:00
2019-11-02 08:21:49 +01:00
2014-01-13 02:10:03 +01:00
2019-04-05 14:50:57 +02:00
2020-03-30 13:18:12 +02:00
2019-07-13 07:55:56 +02:00
2020-03-22 20:01:01 +01:00
2020-03-30 13:18:12 +02:00
2019-05-27 21:29:02 +02:00
2020-03-30 13:18:12 +02:00
2020-03-30 13:18:12 +02:00
2018-12-11 21:23:22 +01:00
2019-09-21 06:45:27 +02:00
2018-12-11 21:23:25 +01:00
2019-05-21 21:31:40 +02:00
2020-03-16 14:55:58 +01:00
2020-03-30 13:18:12 +02:00
2020-03-30 13:18:12 +02:00
2019-10-18 22:13:24 +02:00
2019-09-16 12:12:44 +02:00
2019-11-29 10:18:44 +01:00
2019-06-02 06:33:35 +02:00
2020-03-30 13:18:12 +02:00
2019-05-29 22:21:51 +02:00
2020-03-12 23:44:33 +01:00
2020-03-28 08:51:16 +01:00
2020-03-30 13:18:12 +02:00
2020-03-30 13:18:12 +02:00
2019-01-14 12:15:40 +01:00
2019-07-08 15:24:20 -07:00
2020-02-27 10:43:13 +01:00
2013-03-16 23:53:07 +01:00
2019-09-27 07:02:54 +02:00

This directory contains the test cases.

Each test must have a filename of the form: t*.nim

Note: Tests are only compiled by default. In order to get the tester to execute the compiled binary, you need to specify a spec with an action key (see below for details).

Specs

Each test can contain a spec in a discard """ ... """ block.

Check out the parseSpec procedure in the specs module for a full and reliable reference

action

Specifies what action this test should take.

Default: compile

Options:

  • compile - compiles the module and fails the test if compilations fails.
  • run - compiles and runs the module, fails the test if compilation or execution of test code fails.
  • reject - compiles the module and fails the test if compilation succeeds.

There are certain spec keys that imply run, including output and outputsub.

cmd

Specifies the Nim command to use for compiling the test.

There are a number of variables that are replaced in this spec option:

  • $target - the compilation target, e.g. c.
  • $options - the options for the compiler.
  • $file - the filename of the test.
  • $filedir - the directory of the test file.

Example:

discard """
  cmd: "nim $target --nimblePath:./nimbleDir/simplePkgs $options $file"
"""

Categories

Each folder under this directory represents a test category, which can be tested by running koch tests cat <category>.

The folder rodfiles contains special tests that test incremental compilation via symbol files.

The folder dll contains simple DLL tests.

The folder realtimeGC contains a test for validating that the realtime GC can run properly without linking against the nimrtl.dll/so. It includes a C client and platform specific build files for manual compilation.