Skip to content

Commit

Permalink
Merge pull request #62 from behnam/dev
Browse files Browse the repository at this point in the history
[ucd/category] Add coverage_tests for major category methods
  • Loading branch information
behnam authored Jul 28, 2017
2 parents 98d9c16 + d8c7ddb commit f6349c7
Show file tree
Hide file tree
Showing 2 changed files with 115 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"
114 changes: 114 additions & 0 deletions unic/ucd/category/tests/coverage_tests.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
// 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;


/// Every char falls in exactly one of the major categories; with the exception of `CasedLetter`,
/// when it's also a `Letter`.
#[test]
fn test_general_category_major_groups() {
for cp in iter_all_chars() {
let gc = GeneralCategory::of(cp);

if gc.is_cased_letter() {
assert!(
gc.is_letter() &&
!gc.is_mark() &&
!gc.is_number() &&
!gc.is_punctuation() &&
!gc.is_symbol() &&
!gc.is_separator() &&
!gc.is_other(),
"cp: U+{:04X}, GC: `{:?}`",
cp as u32,
gc
);

} else if gc.is_letter() {
assert!(
!gc.is_mark() &&
!gc.is_number() &&
!gc.is_punctuation() &&
!gc.is_symbol() &&
!gc.is_separator() &&
!gc.is_other(),
"cp: U+{:04X}, GC: `{:?}`",
cp as u32,
gc
);

} else if gc.is_mark() {
assert!(
!gc.is_number() &&
!gc.is_punctuation() &&
!gc.is_symbol() &&
!gc.is_separator() &&
!gc.is_other(),
"cp: U+{:04X}, GC: `{:?}`",
cp as u32,
gc
);

} else if gc.is_number() {
assert!(
!gc.is_punctuation() &&
!gc.is_symbol() &&
!gc.is_separator() &&
!gc.is_other(),
"cp: U+{:04X}, GC: `{:?}`",
cp as u32,
gc
);

} else if gc.is_punctuation() {
assert!(
!gc.is_symbol() &&
!gc.is_separator() &&
!gc.is_other(),
"cp: U+{:04X}, GC: `{:?}`",
cp as u32,
gc
);

} else if gc.is_symbol() {
assert!(
!gc.is_separator() &&
!gc.is_other(),
"cp: U+{:04X}, GC: `{:?}`",
cp as u32,
gc
);

} else if gc.is_separator() {
assert!(
!gc.is_other(),
"cp: U+{:04X}, GC: `{:?}`",
cp as u32,
gc
);

} else {
assert!(
gc.is_other(),
"cp: U+{:04X}, GC: `{:?}`",
cp as u32,
gc
);

}
}
}

0 comments on commit f6349c7

Please sign in to comment.