Skip to content

Commit

Permalink
[ucd/category] Add coverage_tests for major category methods
Browse files Browse the repository at this point in the history
  • Loading branch information
behnam committed Jul 27, 2017
1 parent 98d9c16 commit 34c44aa
Show file tree
Hide file tree
Showing 2 changed files with 80 additions and 0 deletions.
1 change: 1 addition & 0 deletions unic/ucd/category/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,5 @@ travis-ci = { repository = "behnam/rust-unic", branch = "master" }

[dependencies]
unic-ucd-core = { path = "../core/", version = "0.4.0" }
unic-utils = { path = "../../utils/", version = "0.4.0" }
matches = "0.1.6"
79 changes: 79 additions & 0 deletions unic/ucd/category/tests/coverage_tests.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,79 @@
// Copyright 2017 The UNIC Project Developers.
//
// See the COPYRIGHT file at the top-level directory of this distribution.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.


extern crate unic_ucd_category;
extern crate unic_utils;


use unic_ucd_category::GeneralCategory;
use unic_utils::iter_all_chars;


#[test]
fn test_general_category_major_groups() {
// Every char falls in exactly one of the these major categories.
for cp in iter_all_chars() {
let gc = GeneralCategory::of(cp);

if gc.is_cased_letter() {
assert!(gc.is_letter());
assert!(!gc.is_mark());
assert!(!gc.is_number());
assert!(!gc.is_punctuation());
assert!(!gc.is_symbol());
assert!(!gc.is_separator());
assert!(!gc.is_other());

} else if gc.is_letter() {
assert!(!gc.is_mark());
assert!(!gc.is_number());
assert!(!gc.is_punctuation());
assert!(!gc.is_symbol());
assert!(!gc.is_separator());
assert!(!gc.is_other());

} else if gc.is_mark() {
assert!(!gc.is_number());
assert!(!gc.is_punctuation());
assert!(!gc.is_symbol());
assert!(!gc.is_separator());
assert!(!gc.is_other());

} else if gc.is_number() {
assert!(!gc.is_punctuation());
assert!(!gc.is_symbol());
assert!(!gc.is_separator());
assert!(!gc.is_other());

} else if gc.is_punctuation() {
assert!(!gc.is_symbol());
assert!(!gc.is_separator());
assert!(!gc.is_other());

} else if gc.is_symbol() {
assert!(!gc.is_separator());
assert!(!gc.is_other());

} else if gc.is_separator() {
assert!(!gc.is_other());

} else if gc.is_other() {
// nothing

} else {
panic!(
"Should not reach here! Code-Point: U+{:04X}, GeneralCategory: `{:?}`",
cp as u32,
gc
);
}
}
}

0 comments on commit 34c44aa

Please sign in to comment.