fn test_linear()

in eden/mononoke/mononoke_types/src/blame_v2.rs [1170:1427]


    fn test_linear() -> Result<()> {
        let path1 = MPath::new("path")?;
        let path2 = MPath::new("new/path")?;

        let c1 = "one\ntwo\nthree\nfour\n";
        let c2 = "one\nfive\nsix\nfour\n";
        let c3 = "seven\none\nsix\neight\nfour\n";
        let c4 = "seven\none\nnine\nten\neight\nfour\n";
        let c5 = "one\n";

        let b1 = BlameV2::new(ONES_CSID, path1.clone(), c1, vec![])?;
        let b2 = BlameV2::new(
            TWOS_CSID,
            path1.clone(),
            c2,
            vec![BlameParent::new(0, path1.clone(), c1, b1.clone())],
        )?;
        let b3 = BlameV2::new(
            THREES_CSID,
            path1.clone(),
            c3,
            vec![BlameParent::new(0, path1.clone(), c2, b2.clone())],
        )?;
        let b4 = BlameV2::new(
            FOURS_CSID,
            path2.clone(),
            c4,
            vec![BlameParent::new(0, path1.clone(), c3, b3.clone())],
        )?;
        let b5 = BlameV2::new(
            FIVES_CSID,
            path2.clone(),
            c5,
            vec![BlameParent::new(0, path2.clone(), c4, b4.clone())],
        )?;

        assert_eq!(
            b1,
            BlameV2::Blame(BlameData {
                ranges: vec![BlameRangeIndexes {
                    offset: 0,
                    length: 4,
                    csid_index: 0,
                    path_index: 0,
                    origin_offset: 0,
                    parent: None,
                }],
                csids: vec_map! {
                    0 => ONES_CSID,
                },
                max_csid_index: 0,
                paths: vec![path1.clone()],
            }),
        );

        assert_eq!(
            b2,
            BlameV2::Blame(BlameData {
                ranges: vec![
                    BlameRangeIndexes {
                        offset: 0,
                        length: 1,
                        csid_index: 0,
                        path_index: 0,
                        origin_offset: 0,
                        parent: None,
                    },
                    BlameRangeIndexes {
                        offset: 1,
                        length: 2,
                        csid_index: 1,
                        path_index: 0,
                        origin_offset: 1,
                        parent: Some(BlameParentIndexes {
                            parent_index: 0,
                            offset: 1,
                            length: 2,
                            renamed_from_path_index: None,
                        }),
                    },
                    BlameRangeIndexes {
                        offset: 3,
                        length: 1,
                        csid_index: 0,
                        path_index: 0,
                        origin_offset: 3,
                        parent: None,
                    },
                ],
                csids: vec_map! {
                    0 => ONES_CSID,
                    1 => TWOS_CSID,
                },
                max_csid_index: 1,
                paths: vec![path1.clone()],
            }),
        );

        assert_eq!(
            b3,
            BlameV2::Blame(BlameData {
                ranges: vec![
                    BlameRangeIndexes {
                        offset: 0,
                        length: 1,
                        csid_index: 2,
                        path_index: 0,
                        origin_offset: 0,
                        parent: Some(BlameParentIndexes {
                            parent_index: 0,
                            offset: 0,
                            length: 0,
                            renamed_from_path_index: None,
                        }),
                    },
                    BlameRangeIndexes {
                        offset: 1,
                        length: 1,
                        csid_index: 0,
                        path_index: 0,
                        origin_offset: 0,
                        parent: None,
                    },
                    BlameRangeIndexes {
                        offset: 2,
                        length: 1,
                        csid_index: 1,
                        path_index: 0,
                        origin_offset: 2,
                        parent: Some(BlameParentIndexes {
                            parent_index: 0,
                            offset: 1,
                            length: 2,
                            renamed_from_path_index: None,
                        }),
                    },
                    BlameRangeIndexes {
                        offset: 3,
                        length: 1,
                        csid_index: 2,
                        path_index: 0,
                        origin_offset: 3,
                        parent: Some(BlameParentIndexes {
                            parent_index: 0,
                            offset: 3,
                            length: 0,
                            renamed_from_path_index: None,
                        }),
                    },
                    BlameRangeIndexes {
                        offset: 4,
                        length: 1,
                        csid_index: 0,
                        path_index: 0,
                        origin_offset: 3,
                        parent: None,
                    },
                ],
                csids: vec_map! {
                    0 => ONES_CSID,
                    1 => TWOS_CSID,
                    2 => THREES_CSID,
                },
                max_csid_index: 2,
                paths: vec![path1.clone()],
            }),
        );

        assert_eq!(
            b4,
            BlameV2::Blame(BlameData {
                ranges: vec![
                    BlameRangeIndexes {
                        offset: 0,
                        length: 1,
                        csid_index: 2,
                        path_index: 0,
                        origin_offset: 0,
                        parent: Some(BlameParentIndexes {
                            parent_index: 0,
                            offset: 0,
                            length: 0,
                            renamed_from_path_index: None,
                        }),
                    },
                    BlameRangeIndexes {
                        offset: 1,
                        length: 1,
                        csid_index: 0,
                        path_index: 0,
                        origin_offset: 0,
                        parent: None,
                    },
                    BlameRangeIndexes {
                        offset: 2,
                        length: 2,
                        csid_index: 3,
                        path_index: 1,
                        origin_offset: 2,
                        parent: Some(BlameParentIndexes {
                            parent_index: 0,
                            offset: 2,
                            length: 1,
                            renamed_from_path_index: Some(0),
                        }),
                    },
                    BlameRangeIndexes {
                        offset: 4,
                        length: 1,
                        csid_index: 2,
                        path_index: 0,
                        origin_offset: 3,
                        parent: Some(BlameParentIndexes {
                            parent_index: 0,
                            offset: 3,
                            length: 0,
                            renamed_from_path_index: None,
                        }),
                    },
                    BlameRangeIndexes {
                        offset: 5,
                        length: 1,
                        csid_index: 0,
                        path_index: 0,
                        origin_offset: 3,
                        parent: None,
                    },
                ],
                csids: vec_map! {
                    0 => ONES_CSID,
                    2 => THREES_CSID,
                    3 => FOURS_CSID,
                },
                max_csid_index: 3,
                paths: vec![path1.clone(), path2.clone()],
            }),
        );

        assert_eq!(
            b5,
            BlameV2::Blame(BlameData {
                ranges: vec![BlameRangeIndexes {
                    offset: 0,
                    length: 1,
                    csid_index: 0,
                    path_index: 0,
                    origin_offset: 0,
                    parent: None,
                },],
                csids: vec_map! {
                    0 => ONES_CSID,
                },
                max_csid_index: 4,
                paths: vec![path1.clone(), path2.clone()],
            }),
        );
        Ok(())
    }