tonlib_core/library_helper/
contract_library_dict.rs1use super::{LibraryHelper, TonLibraryError};
2use crate::cell::BagOfCells;
3use crate::TonHash;
4
5#[derive(Debug, PartialEq)]
6pub struct ContractLibraryDict(pub Vec<u8>);
7
8impl ContractLibraryDict {
9 pub fn new(dict_boc: Vec<u8>) -> Self {
10 Self(dict_boc)
11 }
12
13 pub fn keys(&self) -> Result<Vec<TonHash>, TonLibraryError> {
14 let cells = BagOfCells::parse(&self.0)?.single_root()?;
15 LibraryHelper::extract_library_hashes(&[cells])
16 }
17}
18
19#[cfg(test)]
20mod tests {
21 use base64::prelude::BASE64_STANDARD;
22 use base64::Engine;
23
24 use crate::library_helper::ContractLibraryDict;
25 use crate::TonHash;
26
27 #[test]
28 fn test_contract_library_dict_keys() -> anyhow::Result<()> {
29 let dict_boc = BASE64_STANDARD.decode("te6ccgECDwEAAwIAA7V7nBIxv16jVmxIK1r2UBfaInVF/ZiTIhIyZW89zjsyXFAAApNHjvgAGEQXStaTphNowXid2UrUP36WDrzwLiBnIAdPV/U5Nn4AAAKTQX9XNIZfX1UAADR1FsgIBQQBAhkEgF4JAsnmyhh0c9cRAwIAb8mHoSBMFFhAAAAAAAACAAAAAAADGN3lQzL4zq6hI/88sLWZIBMzC7WNYeJBkUVxatc74GBAUBcMAJ5FPGwLbCQAAAAAAAAAAScAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAIJyZKZhyT+7yUFKUgAlQcP6fYA6vuPZJ3iavbRwpvRXkaLpxCmiu6kCFcIf9iDkMi+QzAWWce3or9ccVakMUVmEJwIB4AgGAQHfBwC5aAFzgkY369RqzYkFa17KAvtETqi/sxJkQkZMree5x2ZLiwAlyKt1kViW7ZNClbNx3193SCmWemxLikIPCmsjqS7+uVAp0ujABhRYYAAAUmjx3wAEy+vqoB1KHnNAArFoAeU6L0QTxXmMpSLbAFdNPEeWbNwvX1rD8Ipmh3N0p1nJAC5wSMb9eo1ZsSCta9lAX2iJ1Rf2YkyISMmVvPc47MlxUCyebKAGRvwEAABSaPBSRYTL6+pB4AwJAl9uPE8JwA7MY+ZmnGSzCzr1ac6euD6OttvkvYjYIUAO1kagpLqFujmEP0MUdJPyDIILCgApAAAAAb8I6wBl9fYJAwCuM0M2BgBACEIC8F5zC6xlKwQUtGc2RJmcgbi9KFlYBMAU/fgHgoJ5lykCATQODQDLgBLkVbrIrEt2yaFK2bjvr7ukFMs9NiXFIQeFNZHUl39csAPKdF6IJ4rzGUpFtgCumniPLNm4Xr61h+EUzQ7m6U6zkgBbNNH1WCqtrdoD1I2iZsPakLqhenpsHNvLIVoFAC8ac4f8CEICcmEyBp1jWPl1TYnsWJ5gUk5EnB0PEQTb4dSXIG+LspA=")?;
30 let dict = ContractLibraryDict::new(dict_boc);
31 let expected_hashes = [
32 TonHash::from_hex("726132069d6358f9754d89ec589e60524e449c1d0f1104dbe1d497206f8bb290")?,
33 TonHash::from_hex("f05e730bac652b0414b4673644999c81b8bd28595804c014fdf8078282799729")?,
34 ];
35 let keys = dict.keys()?;
36 assert_eq!(keys.len(), 2);
37 assert!(keys.contains(&expected_hashes[0]));
38 assert!(keys.contains(&expected_hashes[1]));
39 Ok(())
40 }
41}