// Copyright 2015-2024 Swim Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

use transit_model::agency::Agency;
pub use transit_model::*;

const AGENCIES_CSV: &[u8] = include_bytes!("agencies.csv");

pub fn agencies() -> Vec<Agency> {
    let mut reader = csv::Reader::from_reader(AGENCIES_CSV);
    let agencies_result = reader.deserialize::<Agency>().collect::<Result<_, _>>();

    let mut agencies: Vec<Agency> = agencies_result.expect("CSV data was invalid.");
    for (i, agency) in agencies.iter_mut().enumerate() {
        agency.index = i;
    }
    agencies
}

#[cfg(test)]
mod tests {

    #[test]
    fn load_agencies() {
        let agencies = super::agencies();
        assert_eq!(agencies.len(), 40);
    }
}
