fn test_context_functions()

in src/app.rs [730:774]


    fn test_context_functions() -> Result<(), Box<dyn Error>> {
        let cx1 = Context {
            config: None,
            cache: None,
            overwritten_region: None,
            overwritten_table_name: None,
            overwritten_port: None,
            output: None,
        };
        assert_eq!(cx1.effective_region(), Region::default());
        // cx1.effective_table_name(); ... exit(1)

        let cx2 = Context {
            config: Some(Config {
                using_region: Some(String::from("ap-northeast-1")),
                using_table: Some(String::from("cfgtbl")),
                using_port: Some(8000),
            }),
            cache: None,
            overwritten_region: None,
            overwritten_table_name: None,
            overwritten_port: None,
            output: None,
        };
        assert_eq!(cx2.effective_region(), Region::from_str("ap-northeast-1")?);
        assert_eq!(cx2.effective_table_name(), String::from("cfgtbl"));

        let mut cx3 = cx2.clone();
        cx3.overwritten_region = Some(Region::from_str("us-east-1")?); // --region us-east-1
        cx3.overwritten_table_name = Some(String::from("argtbl")); // --table argtbl
        assert_eq!(cx3.effective_region(), Region::from_str("us-east-1")?);
        assert_eq!(cx3.effective_table_name(), String::from("argtbl"));

        let mut cx4 = cx2.clone();
        cx4.overwritten_region = Some(Region::from_str("us-east-1")?); // --region us-east-1
        assert_eq!(cx4.effective_region(), Region::from_str("us-east-1")?);
        assert_eq!(cx4.effective_table_name(), String::from("cfgtbl"));

        let mut cx5 = cx2.clone();
        cx5.overwritten_table_name = Some(String::from("argtbl")); // --table argtbl
        assert_eq!(cx5.effective_region(), Region::from_str("ap-northeast-1")?);
        assert_eq!(cx5.effective_table_name(), String::from("argtbl"));

        Ok(())
    }