     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72

    //! RPC unit test moduleS

    pub mod helpers;

    // extract a chain from the given JSON file,
    // stored in ethcore/res/ethereum/tests/.
    //
    // usage:
    //     `extract_chain!("Folder/File")` will load Folder/File.json and extract
    //     the first block chain stored within.
    //
    //     `extract_chain!("Folder/File", "with_name")` will load Folder/File.json and
    //     extract the chain with that name. This will panic if no chain by that name
    //     is found.
    macro_rules! extract_chain {
    	(iter $file:expr) => {{
    		const RAW_DATA: &'static [u8] =
    			include_bytes!(concat!("../../../../ethcore/res/ethereum/tests/", $file, ".json"));
    		::ethjson::blockchain::Test::load(RAW_DATA).unwrap().into_iter()
    	}};

    	($file:expr, $name:expr) => {{
    		let mut chain = None;
    		for (name, c) in extract_chain!(iter $file) {
    			if name == $name {
    				chain = Some(c);
    				break;
    			}
    		}
    		chain.unwrap()
    	}};

    	($file:expr) => {{
    		extract_chain!(iter $file).next().unwrap().1
    	}};
    }

    macro_rules! register_test {
    	($name:ident, $cb:expr, $file:expr) => {
    		#[test]
    		fn $name() {
    			for (name, chain) in extract_chain!(iter $file) {
    				$cb(name, chain);
    			}
    		}
    	};

    	(heavy $name:ident, $cb:expr, $file:expr) => {
    		#[test]
    		#[cfg(feature = "test-heavy")]
    		fn $name() {
    			for (name, chain) in extract_chain!(iter $file) {
    				$cb(name, chain);
    			}
    		}
    	};

    	(ignore $name:ident, $cb:expr, $file:expr) => {
    		#[test]
    		#[ignore]
    		fn $name() {
    			for (name, chain) in extract_chain!(iter $file) {
    				$cb(name, chain);
    			}
    		}
    	};
    }

    #[cfg(test)]
    mod mocked;
    #[cfg(test)]
    mod eth;

# Help

## Keyboard Shortcuts

?
  Show this help dialog
S
  Focus the search field
⇤
  Move up in search results
⇥
  Move down in search results
⏎
  Go to active search result
+
  Collapse/expand all sections

## Search Tricks

Prefix searches with a type followed by a colon (e.g. `fn:`) to restrict the search to a given type.

Accepted types are: `fn`, `mod`, `struct`, `enum`, `trait`, `type`, `macro`, and `const`.

Search functions by type signature (e.g. `vec -> usize` or `* -> vec`)