Move tests to a new file
This commit is contained in:
parent
695460fbf5
commit
8215b74032
@ -2,6 +2,8 @@
|
||||
|
||||
mod tags;
|
||||
mod html;
|
||||
#[cfg(test)]
|
||||
mod tests;
|
||||
|
||||
use hir::{Name, Semantics};
|
||||
use ra_ide_db::{
|
||||
@ -279,137 +281,3 @@ fn highlight_name_by_syntax(name: ast::Name) -> Highlight {
|
||||
_ => default,
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use std::fs;
|
||||
|
||||
use test_utils::{assert_eq_text, project_dir, read_text};
|
||||
|
||||
use crate::{
|
||||
mock_analysis::{single_file, MockAnalysis},
|
||||
FileRange, TextRange,
|
||||
};
|
||||
|
||||
#[test]
|
||||
fn test_highlighting() {
|
||||
let (analysis, file_id) = single_file(
|
||||
r#"
|
||||
#[derive(Clone, Debug)]
|
||||
struct Foo {
|
||||
pub x: i32,
|
||||
pub y: i32,
|
||||
}
|
||||
|
||||
fn foo<T>() -> T {
|
||||
unimplemented!();
|
||||
foo::<i32>();
|
||||
}
|
||||
|
||||
macro_rules! def_fn {
|
||||
($($tt:tt)*) => {$($tt)*}
|
||||
}
|
||||
|
||||
def_fn!{
|
||||
fn bar() -> u32 {
|
||||
100
|
||||
}
|
||||
}
|
||||
|
||||
// comment
|
||||
fn main() {
|
||||
println!("Hello, {}!", 92);
|
||||
|
||||
let mut vec = Vec::new();
|
||||
if true {
|
||||
let x = 92;
|
||||
vec.push(Foo { x, y: 1 });
|
||||
}
|
||||
unsafe { vec.set_len(0); }
|
||||
|
||||
let mut x = 42;
|
||||
let y = &mut x;
|
||||
let z = &y;
|
||||
|
||||
y;
|
||||
}
|
||||
|
||||
enum E<X> {
|
||||
V(X)
|
||||
}
|
||||
|
||||
impl<X> E<X> {
|
||||
fn new<T>() -> E<T> {}
|
||||
}
|
||||
"#
|
||||
.trim(),
|
||||
);
|
||||
let dst_file = project_dir().join("crates/ra_ide/src/snapshots/highlighting.html");
|
||||
let actual_html = &analysis.highlight_as_html(file_id, false).unwrap();
|
||||
let expected_html = &read_text(&dst_file);
|
||||
fs::write(dst_file, &actual_html).unwrap();
|
||||
assert_eq_text!(expected_html, actual_html);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_rainbow_highlighting() {
|
||||
let (analysis, file_id) = single_file(
|
||||
r#"
|
||||
fn main() {
|
||||
let hello = "hello";
|
||||
let x = hello.to_string();
|
||||
let y = hello.to_string();
|
||||
|
||||
let x = "other color please!";
|
||||
let y = x.to_string();
|
||||
}
|
||||
|
||||
fn bar() {
|
||||
let mut hello = "hello";
|
||||
}
|
||||
"#
|
||||
.trim(),
|
||||
);
|
||||
let dst_file = project_dir().join("crates/ra_ide/src/snapshots/rainbow_highlighting.html");
|
||||
let actual_html = &analysis.highlight_as_html(file_id, true).unwrap();
|
||||
let expected_html = &read_text(&dst_file);
|
||||
fs::write(dst_file, &actual_html).unwrap();
|
||||
assert_eq_text!(expected_html, actual_html);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn accidentally_quadratic() {
|
||||
let file = project_dir().join("crates/ra_syntax/test_data/accidentally_quadratic");
|
||||
let src = fs::read_to_string(file).unwrap();
|
||||
|
||||
let mut mock = MockAnalysis::new();
|
||||
let file_id = mock.add_file("/main.rs", &src);
|
||||
let host = mock.analysis_host();
|
||||
|
||||
// let t = std::time::Instant::now();
|
||||
let _ = host.analysis().highlight(file_id).unwrap();
|
||||
// eprintln!("elapsed: {:?}", t.elapsed());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_ranges() {
|
||||
let (analysis, file_id) = single_file(
|
||||
r#"
|
||||
#[derive(Clone, Debug)]
|
||||
struct Foo {
|
||||
pub x: i32,
|
||||
pub y: i32,
|
||||
}"#,
|
||||
);
|
||||
|
||||
// The "x"
|
||||
let highlights = &analysis
|
||||
.highlight_range(FileRange {
|
||||
file_id,
|
||||
range: TextRange::offset_len(82.into(), 1.into()),
|
||||
})
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(&highlights[0].highlight.to_string(), "field");
|
||||
}
|
||||
}
|
||||
|
127
crates/ra_ide/src/syntax_highlighting/tests.rs
Normal file
127
crates/ra_ide/src/syntax_highlighting/tests.rs
Normal file
@ -0,0 +1,127 @@
|
||||
use std::fs;
|
||||
|
||||
use test_utils::{assert_eq_text, project_dir, read_text};
|
||||
|
||||
use crate::{
|
||||
mock_analysis::{single_file, MockAnalysis},
|
||||
FileRange, TextRange,
|
||||
};
|
||||
|
||||
#[test]
|
||||
fn test_highlighting() {
|
||||
let (analysis, file_id) = single_file(
|
||||
r#"
|
||||
#[derive(Clone, Debug)]
|
||||
struct Foo {
|
||||
pub x: i32,
|
||||
pub y: i32,
|
||||
}
|
||||
|
||||
fn foo<T>() -> T {
|
||||
unimplemented!();
|
||||
foo::<i32>();
|
||||
}
|
||||
|
||||
macro_rules! def_fn {
|
||||
($($tt:tt)*) => {$($tt)*}
|
||||
}
|
||||
|
||||
def_fn!{
|
||||
fn bar() -> u32 {
|
||||
100
|
||||
}
|
||||
}
|
||||
|
||||
// comment
|
||||
fn main() {
|
||||
println!("Hello, {}!", 92);
|
||||
|
||||
let mut vec = Vec::new();
|
||||
if true {
|
||||
let x = 92;
|
||||
vec.push(Foo { x, y: 1 });
|
||||
}
|
||||
unsafe { vec.set_len(0); }
|
||||
|
||||
let mut x = 42;
|
||||
let y = &mut x;
|
||||
let z = &y;
|
||||
|
||||
y;
|
||||
}
|
||||
|
||||
enum E<X> {
|
||||
V(X)
|
||||
}
|
||||
|
||||
impl<X> E<X> {
|
||||
fn new<T>() -> E<T> {}
|
||||
}
|
||||
"#
|
||||
.trim(),
|
||||
);
|
||||
let dst_file = project_dir().join("crates/ra_ide/src/snapshots/highlighting.html");
|
||||
let actual_html = &analysis.highlight_as_html(file_id, false).unwrap();
|
||||
let expected_html = &read_text(&dst_file);
|
||||
fs::write(dst_file, &actual_html).unwrap();
|
||||
assert_eq_text!(expected_html, actual_html);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_rainbow_highlighting() {
|
||||
let (analysis, file_id) = single_file(
|
||||
r#"
|
||||
fn main() {
|
||||
let hello = "hello";
|
||||
let x = hello.to_string();
|
||||
let y = hello.to_string();
|
||||
|
||||
let x = "other color please!";
|
||||
let y = x.to_string();
|
||||
}
|
||||
|
||||
fn bar() {
|
||||
let mut hello = "hello";
|
||||
}
|
||||
"#
|
||||
.trim(),
|
||||
);
|
||||
let dst_file = project_dir().join("crates/ra_ide/src/snapshots/rainbow_highlighting.html");
|
||||
let actual_html = &analysis.highlight_as_html(file_id, true).unwrap();
|
||||
let expected_html = &read_text(&dst_file);
|
||||
fs::write(dst_file, &actual_html).unwrap();
|
||||
assert_eq_text!(expected_html, actual_html);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn accidentally_quadratic() {
|
||||
let file = project_dir().join("crates/ra_syntax/test_data/accidentally_quadratic");
|
||||
let src = fs::read_to_string(file).unwrap();
|
||||
|
||||
let mut mock = MockAnalysis::new();
|
||||
let file_id = mock.add_file("/main.rs", &src);
|
||||
let host = mock.analysis_host();
|
||||
|
||||
// let t = std::time::Instant::now();
|
||||
let _ = host.analysis().highlight(file_id).unwrap();
|
||||
// eprintln!("elapsed: {:?}", t.elapsed());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_ranges() {
|
||||
let (analysis, file_id) = single_file(
|
||||
r#"
|
||||
#[derive(Clone, Debug)]
|
||||
struct Foo {
|
||||
pub x: i32,
|
||||
pub y: i32,
|
||||
}"#,
|
||||
);
|
||||
|
||||
// The "x"
|
||||
let highlights = &analysis
|
||||
.highlight_range(FileRange { file_id, range: TextRange::offset_len(82.into(), 1.into()) })
|
||||
.unwrap();
|
||||
|
||||
assert_eq!(&highlights[0].highlight.to_string(), "field");
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user