[][src]Crate lab_grader

A criterion runner

For complete examples, see the examples directory on Github.

Example

extern crate lab_grader;

use lab_grader::*;

fn main() {
    // Step 1: Build a Submission
    // Collect name and ID from the command line
    let mut sub = Submission::from_cli();
    // Give the submission some data using the data! macro
    sub.use_data(data! {
        "some_key" => "some value"
    });

    // Step 2: Establish Criteria
    let mut criteria = Criteria::from(vec![
        Criterion::new(
            // The criterion's name
            "First criterion",
            // How many points it's worth
            10,
            // pass/fail messages
            ("passed", "failed"),
            // The test that determines if the criterion passes or not
            Box::new(|data: &TestData| -> bool {
                data["some_key"] == "some value"
            })
        )
    ]);

    // Grade the submission against the criteria.
    // This will assign it a grade and fill it's `passed` and `failed` fields
    sub.grade_against(&mut criteria);

    // Print out all the criteria to the student
    println!("{}", criteria);
}

Re-exports

pub use submission::Submission;
pub use submission::TestData;
pub use criterion::Criterion;
pub use criteria::Criteria;
pub use results_file::AsCsv;
pub use helpers::web;

Modules

batch

Criteria built from yaml

criteria

A collection of Criterion

criterion

Definitions for creating and running criteria

helpers

Functions for common tasks in criteria

results_file
submission

A bundle of data that represents a students work.

Macros

data

A macro to easily create a TestData struct, which is really just an alias to HashMap<String, String>

prompt

Calls prompt, then tries to parse the input into the provided type. If parsing fails, it will print an error message and then quit the current process.