arf-console 0.7.0-beta.1

A cross-platform R console written in Rust
use super::*;
use crate::pager::help::browser::tests::topic;
use arf_harp::help::HelpTopic;
use std::sync::Arc;

#[test]
fn test_calculate_layout_standard() {
    assert_eq!(calculate_layout(80), (26, 49));
}

#[test]
fn test_calculate_layout_wide() {
    assert_eq!(calculate_layout(120), (40, 75));
}

#[test]
fn test_calculate_layout_narrow() {
    assert_eq!(calculate_layout(60), (20, 35));
}

#[test]
fn test_calculate_layout_very_narrow() {
    assert_eq!(calculate_layout(40), (20, 15));
}

#[test]
fn pending_search_renders_old_candidates_and_only_shows_placeholder_when_empty() {
    let topics: Arc<[HelpTopic]> = vec![
        topic("pkg", "old_first", &[], "First old title"),
        topic("pkg", "old_selected", &[], "Selected old title"),
    ]
    .into();
    let mut browser = HelpBrowser::new(Arc::clone(&topics), Vec::new(), "new");
    browser.filtered = vec![(0, 12), (1, 10)];
    browser.selected = 1;
    browser.text_scroll.scroll_pos = 4;
    browser.start_search();

    let mut frame = Vec::new();
    browser.render_to(&mut frame, 80, 12).unwrap();
    let rendered = String::from_utf8(frame).unwrap();
    assert!(rendered.contains("2 topics"));
    assert!(rendered.contains("old_first"));
    assert!(rendered.contains("old_selected"));
    assert!(!rendered.contains("Searching"));

    browser.filtered.clear();
    let mut empty_frame = Vec::new();
    browser.render_to(&mut empty_frame, 80, 12).unwrap();
    let rendered = String::from_utf8(empty_frame).unwrap();
    assert!(rendered.contains("Searching"));
}