| @safe unittest | |
| { | |
| import std.internal.entropy; | |
| int[4] bytes; | |
| if (getEntropy(cast(void[]) bytes).isOK) | |
| { | |
| // Success; data in `bytes` may be used. | |
| } | |
| assert((cast(void[]) bytes).length == bytes.sizeof); | |
| } | |
| @safe unittest | |
| { | |
| import std.internal.entropy; | |
| ubyte[16] bytes; | |
| if (getEntropy(bytes).isOK) | |
| { | |
| // Success; data in `bytes` may be used. | |
| } | |
| } | |
| @system unittest | |
| { | |
| import std.internal.entropy; | |
| ubyte[16] bytes; | |
| if (getEntropy(cast(void*) bytes.ptr, bytes.length).isOK) | |
| { | |
| // Success; data in `bytes` may be used. | |
| } | |
| } | |
| @system unittest | |
| { | |
| import std.internal.entropy; | |
| int number = void; | |
| if (getEntropy(&number, number.sizeof).isOK) | |
| { | |
| // Success; value of `number` may be used. | |
| } | |
| } | |
| @system unittest | |
| { | |
| import std.internal.entropy; | |
| ubyte[4] bytes; | |
| // `EntropySource.none` always fails. | |
| assert(!getEntropy(bytes.ptr, bytes.length, EntropySource.none).isOK); | |
| } | |
| @safe unittest | |
| { | |
| import std.internal.entropy; | |
| ubyte[4] data; | |
| EntropyResult result = getEntropy(data[]); | |
| if (result.isOK) | |
| { | |
| // Success; data in `bytes` may be used. | |
| } | |
| else | |
| { | |
| // Failure | |
| if (result.isUnavailable) | |
| { | |
| // System’s entropy source was unavailable. | |
| } | |
| // Call `toString` to obtain a user-readable error message. | |
| assert(result.toString() !is null); | |
| assert(result.toString().length > 0); | |
| } | |
| } | |