1a1d56debSopenharmony_ci// Copyright (c) 2023 Huawei Device Co., Ltd.
2a1d56debSopenharmony_ci// Licensed under the Apache License, Version 2.0 (the "License");
3a1d56debSopenharmony_ci// you may not use this file except in compliance with the License.
4a1d56debSopenharmony_ci// You may obtain a copy of the License at
5a1d56debSopenharmony_ci//
6a1d56debSopenharmony_ci//     http://www.apache.org/licenses/LICENSE-2.0
7a1d56debSopenharmony_ci//
8a1d56debSopenharmony_ci// Unless required by applicable law or agreed to in writing, software
9a1d56debSopenharmony_ci// distributed under the License is distributed on an "AS IS" BASIS,
10a1d56debSopenharmony_ci// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
11a1d56debSopenharmony_ci// See the License for the specific language governing permissions and
12a1d56debSopenharmony_ci// limitations under the License.
13a1d56debSopenharmony_ci
14a1d56debSopenharmony_ciuse crate::JsonValue;
15a1d56debSopenharmony_ciuse core::fmt::{Debug, Display, Formatter};
16a1d56debSopenharmony_ciuse core::slice::{Iter, IterMut};
17a1d56debSopenharmony_ci
18a1d56debSopenharmony_ci/// Array type, implemented using Vec.
19a1d56debSopenharmony_ci///
20a1d56debSopenharmony_ci/// # Situation
21a1d56debSopenharmony_ci/// * When the average number of Array entries exceeds 15 (estimated value), and query operation exists.
22a1d56debSopenharmony_ci///
23a1d56debSopenharmony_ci/// # Attention
24a1d56debSopenharmony_ci/// * 只有开启 `vec_array` feature 时才可以使用,且与其他的 array 相关 feature 冲突。(默认开启)
25a1d56debSopenharmony_ci/// Only open `vec_array` feature can be used, and conflicts with other array-related features. (Enabled by default)
26a1d56debSopenharmony_ci///
27a1d56debSopenharmony_ci/// # Examples
28a1d56debSopenharmony_ci/// ```
29a1d56debSopenharmony_ci/// use ylong_json::Array;
30a1d56debSopenharmony_ci///
31a1d56debSopenharmony_ci/// let array = Array::new();
32a1d56debSopenharmony_ci/// assert_eq!(array.is_empty(), true);
33a1d56debSopenharmony_ci/// ```
34a1d56debSopenharmony_ci#[derive(Default, Clone)]
35a1d56debSopenharmony_cipub struct Array {
36a1d56debSopenharmony_ci    inner: Vec<JsonValue>,
37a1d56debSopenharmony_ci}
38a1d56debSopenharmony_ci
39a1d56debSopenharmony_ciimpl Array {
40a1d56debSopenharmony_ci    /// Creates an empty Array instance.
41a1d56debSopenharmony_ci    ///
42a1d56debSopenharmony_ci    /// # Examples
43a1d56debSopenharmony_ci    /// ```
44a1d56debSopenharmony_ci    /// use ylong_json::Array;
45a1d56debSopenharmony_ci    ///
46a1d56debSopenharmony_ci    /// let array = Array::new();
47a1d56debSopenharmony_ci    /// ```
48a1d56debSopenharmony_ci    pub fn new() -> Self {
49a1d56debSopenharmony_ci        Self { inner: Vec::new() }
50a1d56debSopenharmony_ci    }
51a1d56debSopenharmony_ci
52a1d56debSopenharmony_ci    /// Gets length of Array.
53a1d56debSopenharmony_ci    ///
54a1d56debSopenharmony_ci    /// # Examples
55a1d56debSopenharmony_ci    /// ```
56a1d56debSopenharmony_ci    /// use ylong_json::{Array, JsonValue};
57a1d56debSopenharmony_ci    ///
58a1d56debSopenharmony_ci    /// let mut array = Array::new();
59a1d56debSopenharmony_ci    /// assert_eq!(array.len(), 0);
60a1d56debSopenharmony_ci    ///
61a1d56debSopenharmony_ci    /// array.push(JsonValue::Null);
62a1d56debSopenharmony_ci    /// assert_eq!(array.len(), 1);
63a1d56debSopenharmony_ci    /// ```
64a1d56debSopenharmony_ci    pub fn len(&self) -> usize {
65a1d56debSopenharmony_ci        self.inner.len()
66a1d56debSopenharmony_ci    }
67a1d56debSopenharmony_ci
68a1d56debSopenharmony_ci    /// Determines whether Array is empty.
69a1d56debSopenharmony_ci    ///
70a1d56debSopenharmony_ci    /// # Examples
71a1d56debSopenharmony_ci    /// ```
72a1d56debSopenharmony_ci    /// use ylong_json::{Array, JsonValue};
73a1d56debSopenharmony_ci    ///
74a1d56debSopenharmony_ci    /// let mut array = Array::new();
75a1d56debSopenharmony_ci    /// assert_eq!(array.is_empty(), true);
76a1d56debSopenharmony_ci    ///
77a1d56debSopenharmony_ci    /// array.push(JsonValue::Null);
78a1d56debSopenharmony_ci    /// assert_eq!(array.is_empty(), false);
79a1d56debSopenharmony_ci    /// ```
80a1d56debSopenharmony_ci    pub fn is_empty(&self) -> bool {
81a1d56debSopenharmony_ci        self.inner.len() == 0
82a1d56debSopenharmony_ci    }
83a1d56debSopenharmony_ci
84a1d56debSopenharmony_ci    /// Insert a new JsonValue at the end of Array.
85a1d56debSopenharmony_ci    ///
86a1d56debSopenharmony_ci    /// # Examples
87a1d56debSopenharmony_ci    /// ```
88a1d56debSopenharmony_ci    /// use ylong_json::{Array, JsonValue};
89a1d56debSopenharmony_ci    ///
90a1d56debSopenharmony_ci    /// let mut array = Array::new();
91a1d56debSopenharmony_ci    /// assert_eq!(array.len(), 0);
92a1d56debSopenharmony_ci    ///
93a1d56debSopenharmony_ci    /// array.push(JsonValue::Null);
94a1d56debSopenharmony_ci    /// assert_eq!(array.len(), 1);
95a1d56debSopenharmony_ci    /// ```
96a1d56debSopenharmony_ci    pub fn push(&mut self, value: JsonValue) {
97a1d56debSopenharmony_ci        self.inner.push(value)
98a1d56debSopenharmony_ci    }
99a1d56debSopenharmony_ci
100a1d56debSopenharmony_ci    /// Pops the element at the end of Array.
101a1d56debSopenharmony_ci    ///
102a1d56debSopenharmony_ci    /// # Examples
103a1d56debSopenharmony_ci    /// ```
104a1d56debSopenharmony_ci    /// use ylong_json::{Array, JsonValue};
105a1d56debSopenharmony_ci    ///
106a1d56debSopenharmony_ci    /// let mut array = Array::new();
107a1d56debSopenharmony_ci    /// assert_eq!(array.pop(), None);
108a1d56debSopenharmony_ci    ///
109a1d56debSopenharmony_ci    /// array.push(JsonValue::Null);
110a1d56debSopenharmony_ci    /// assert_eq!(array.pop(), Some(JsonValue::Null));
111a1d56debSopenharmony_ci    /// ```
112a1d56debSopenharmony_ci    pub fn pop(&mut self) -> Option<JsonValue> {
113a1d56debSopenharmony_ci        self.inner.pop()
114a1d56debSopenharmony_ci    }
115a1d56debSopenharmony_ci
116a1d56debSopenharmony_ci    /// Gets a common iterator of Array.
117a1d56debSopenharmony_ci    ///
118a1d56debSopenharmony_ci    /// # Examples
119a1d56debSopenharmony_ci    /// ```
120a1d56debSopenharmony_ci    /// use ylong_json::Array;
121a1d56debSopenharmony_ci    ///
122a1d56debSopenharmony_ci    /// let array = Array::new();
123a1d56debSopenharmony_ci    /// let iter = array.iter();
124a1d56debSopenharmony_ci    /// ```
125a1d56debSopenharmony_ci    pub fn iter(&self) -> Iter<'_, JsonValue> {
126a1d56debSopenharmony_ci        self.inner.iter()
127a1d56debSopenharmony_ci    }
128a1d56debSopenharmony_ci
129a1d56debSopenharmony_ci    /// Gets a mutable iterator of Array.
130a1d56debSopenharmony_ci    ///
131a1d56debSopenharmony_ci    /// # Examples
132a1d56debSopenharmony_ci    /// ```
133a1d56debSopenharmony_ci    /// use ylong_json::Array;
134a1d56debSopenharmony_ci    ///
135a1d56debSopenharmony_ci    /// let mut array = Array::new();
136a1d56debSopenharmony_ci    /// let iter_mut = array.iter_mut();
137a1d56debSopenharmony_ci    /// ```
138a1d56debSopenharmony_ci    pub fn iter_mut(&mut self) -> IterMut<'_, JsonValue> {
139a1d56debSopenharmony_ci        self.inner.iter_mut()
140a1d56debSopenharmony_ci    }
141a1d56debSopenharmony_ci
142a1d56debSopenharmony_ci    /// Returns a common reference to the specified index ** member ** in Array.
143a1d56debSopenharmony_ci    ///
144a1d56debSopenharmony_ci    /// # Examples
145a1d56debSopenharmony_ci    /// ```
146a1d56debSopenharmony_ci    /// use ylong_json::{Array, JsonValue};
147a1d56debSopenharmony_ci    ///
148a1d56debSopenharmony_ci    /// let mut array = Array::new();
149a1d56debSopenharmony_ci    /// array.push(JsonValue::Null);
150a1d56debSopenharmony_ci    /// assert_eq!(array.get(0), Some(&JsonValue::Null));
151a1d56debSopenharmony_ci    /// assert_eq!(array.get(1), None);
152a1d56debSopenharmony_ci    /// ```
153a1d56debSopenharmony_ci    pub fn get(&self, index: usize) -> Option<&JsonValue> {
154a1d56debSopenharmony_ci        self.inner.get(index)
155a1d56debSopenharmony_ci    }
156a1d56debSopenharmony_ci
157a1d56debSopenharmony_ci    /// Returns a mutable reference to the specified index ** member ** in Array.
158a1d56debSopenharmony_ci    ///
159a1d56debSopenharmony_ci    /// # Examples
160a1d56debSopenharmony_ci    /// ```
161a1d56debSopenharmony_ci    /// use ylong_json::{Array, JsonValue};
162a1d56debSopenharmony_ci    ///
163a1d56debSopenharmony_ci    /// let mut array = Array::new();
164a1d56debSopenharmony_ci    /// array.push(JsonValue::Null);
165a1d56debSopenharmony_ci    /// assert_eq!(array.get_mut(0), Some(&mut JsonValue::Null));
166a1d56debSopenharmony_ci    /// assert_eq!(array.get_mut(1), None);
167a1d56debSopenharmony_ci    /// ```
168a1d56debSopenharmony_ci    pub fn get_mut(&mut self, index: usize) -> Option<&mut JsonValue> {
169a1d56debSopenharmony_ci        self.inner.get_mut(index)
170a1d56debSopenharmony_ci    }
171a1d56debSopenharmony_ci
172a1d56debSopenharmony_ci    /// Returns a common reference to the trailing ** member ** in Array.。
173a1d56debSopenharmony_ci    ///
174a1d56debSopenharmony_ci    /// # Examples
175a1d56debSopenharmony_ci    /// ```
176a1d56debSopenharmony_ci    /// use ylong_json::{Array, JsonValue};
177a1d56debSopenharmony_ci    ///
178a1d56debSopenharmony_ci    /// let mut array = Array::new();
179a1d56debSopenharmony_ci    /// assert_eq!(array.last(), None);
180a1d56debSopenharmony_ci    /// array.push(JsonValue::Null);
181a1d56debSopenharmony_ci    /// assert_eq!(array.last(), Some(&JsonValue::Null));
182a1d56debSopenharmony_ci    /// ```
183a1d56debSopenharmony_ci    pub fn last(&self) -> Option<&JsonValue> {
184a1d56debSopenharmony_ci        self.inner.last()
185a1d56debSopenharmony_ci    }
186a1d56debSopenharmony_ci
187a1d56debSopenharmony_ci    /// Returns a mutable reference to the trailing ** member ** in Array.
188a1d56debSopenharmony_ci    ///
189a1d56debSopenharmony_ci    /// # Examples
190a1d56debSopenharmony_ci    /// ```
191a1d56debSopenharmony_ci    /// use ylong_json::{Array, JsonValue};
192a1d56debSopenharmony_ci    ///
193a1d56debSopenharmony_ci    /// let mut array = Array::new();
194a1d56debSopenharmony_ci    /// assert_eq!(array.last_mut(), None);
195a1d56debSopenharmony_ci    /// array.push(JsonValue::Null);
196a1d56debSopenharmony_ci    /// assert_eq!(array.last_mut(), Some(&mut JsonValue::Null));
197a1d56debSopenharmony_ci    /// ```
198a1d56debSopenharmony_ci    pub fn last_mut(&mut self) -> Option<&mut JsonValue> {
199a1d56debSopenharmony_ci        self.inner.last_mut()
200a1d56debSopenharmony_ci    }
201a1d56debSopenharmony_ci
202a1d56debSopenharmony_ci    /// Removes the node in Array with the specified index.
203a1d56debSopenharmony_ci    ///
204a1d56debSopenharmony_ci    /// # Examples
205a1d56debSopenharmony_ci    /// ```
206a1d56debSopenharmony_ci    /// use ylong_json::{Array, JsonValue};
207a1d56debSopenharmony_ci    ///
208a1d56debSopenharmony_ci    /// let mut array = Array::new();
209a1d56debSopenharmony_ci    /// array.push(JsonValue::Null);
210a1d56debSopenharmony_ci    /// array.push(JsonValue::Boolean(true));
211a1d56debSopenharmony_ci    /// array.push(JsonValue::Null);
212a1d56debSopenharmony_ci    ///
213a1d56debSopenharmony_ci    /// assert_eq!(array.len(), 3);
214a1d56debSopenharmony_ci    /// let second = array.remove(1);
215a1d56debSopenharmony_ci    /// assert_eq!(second, Some(JsonValue::Boolean(true)));
216a1d56debSopenharmony_ci    /// assert_eq!(array.len(), 2);
217a1d56debSopenharmony_ci    /// ```
218a1d56debSopenharmony_ci    pub fn remove(&mut self, index: usize) -> Option<JsonValue> {
219a1d56debSopenharmony_ci        if index >= self.inner.len() {
220a1d56debSopenharmony_ci            return None;
221a1d56debSopenharmony_ci        }
222a1d56debSopenharmony_ci        Some(self.inner.remove(index))
223a1d56debSopenharmony_ci    }
224a1d56debSopenharmony_ci}
225a1d56debSopenharmony_ci
226a1d56debSopenharmony_ciimpl PartialEq for Array {
227a1d56debSopenharmony_ci    /// Determines whether two arrays are equal.
228a1d56debSopenharmony_ci    ///
229a1d56debSopenharmony_ci    /// Two Arrays are equal: They have the same length and the elements in each position are equal.
230a1d56debSopenharmony_ci    ///
231a1d56debSopenharmony_ci    /// # Examples
232a1d56debSopenharmony_ci    /// ```
233a1d56debSopenharmony_ci    /// use ylong_json::{Array, JsonValue};
234a1d56debSopenharmony_ci    ///
235a1d56debSopenharmony_ci    /// let array1 = Array::new();
236a1d56debSopenharmony_ci    /// let array2 = Array::new();
237a1d56debSopenharmony_ci    /// let mut array3 = Array::new();
238a1d56debSopenharmony_ci    /// array3.push(JsonValue::Null);
239a1d56debSopenharmony_ci    ///
240a1d56debSopenharmony_ci    /// assert_eq!(array1, array2);
241a1d56debSopenharmony_ci    /// assert_ne!(array1, array3);
242a1d56debSopenharmony_ci    /// ```
243a1d56debSopenharmony_ci    fn eq(&self, other: &Self) -> bool {
244a1d56debSopenharmony_ci        if self.len() != other.len() {
245a1d56debSopenharmony_ci            return false;
246a1d56debSopenharmony_ci        }
247a1d56debSopenharmony_ci        for (a, b) in self.iter().zip(other.iter()) {
248a1d56debSopenharmony_ci            if a != b {
249a1d56debSopenharmony_ci                return false;
250a1d56debSopenharmony_ci            }
251a1d56debSopenharmony_ci        }
252a1d56debSopenharmony_ci        true
253a1d56debSopenharmony_ci    }
254a1d56debSopenharmony_ci}
255a1d56debSopenharmony_ci
256a1d56debSopenharmony_ciimpl Display for Array {
257a1d56debSopenharmony_ci    fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
258a1d56debSopenharmony_ci        write!(f, "[")?;
259a1d56debSopenharmony_ci        for (n, item) in self.inner.iter().enumerate() {
260a1d56debSopenharmony_ci            if n != 0 {
261a1d56debSopenharmony_ci                write!(f, ",")?;
262a1d56debSopenharmony_ci            }
263a1d56debSopenharmony_ci            write!(f, "{item}")?;
264a1d56debSopenharmony_ci        }
265a1d56debSopenharmony_ci        write!(f, "]")
266a1d56debSopenharmony_ci    }
267a1d56debSopenharmony_ci}
268a1d56debSopenharmony_ci
269a1d56debSopenharmony_ciimpl Debug for Array {
270a1d56debSopenharmony_ci    fn fmt(&self, f: &mut Formatter<'_>) -> core::fmt::Result {
271a1d56debSopenharmony_ci        Display::fmt(self, f)
272a1d56debSopenharmony_ci    }
273a1d56debSopenharmony_ci}
274a1d56debSopenharmony_ci
275a1d56debSopenharmony_ci#[cfg(test)]
276a1d56debSopenharmony_cimod ut_vec {
277a1d56debSopenharmony_ci    use crate::{Array, JsonValue};
278a1d56debSopenharmony_ci
279a1d56debSopenharmony_ci    /// UT test for `Array::is_empty`.
280a1d56debSopenharmony_ci    ///
281a1d56debSopenharmony_ci    /// # Title
282a1d56debSopenharmony_ci    /// ut_array_is_empty
283a1d56debSopenharmony_ci    ///
284a1d56debSopenharmony_ci    /// # Brief
285a1d56debSopenharmony_ci    /// 1. Creates some `Array`s.
286a1d56debSopenharmony_ci    /// 2. Calls `Array::is_empty`.
287a1d56debSopenharmony_ci    /// 3. Checks if the test results are correct.
288a1d56debSopenharmony_ci    #[test]
289a1d56debSopenharmony_ci    fn ut_array_is_empty() {
290a1d56debSopenharmony_ci        assert!(Array::new().is_empty());
291a1d56debSopenharmony_ci        assert!(!array!(1).is_empty());
292a1d56debSopenharmony_ci    }
293a1d56debSopenharmony_ci
294a1d56debSopenharmony_ci    /// UT test for `Array::pop`.
295a1d56debSopenharmony_ci    ///
296a1d56debSopenharmony_ci    /// # Title
297a1d56debSopenharmony_ci    /// ut_array_pop
298a1d56debSopenharmony_ci    ///
299a1d56debSopenharmony_ci    /// # Brief
300a1d56debSopenharmony_ci    /// 1. Creates some `Array`s.
301a1d56debSopenharmony_ci    /// 2. Calls `Array::pop`.
302a1d56debSopenharmony_ci    /// 3. Checks if the test results are correct.
303a1d56debSopenharmony_ci    #[test]
304a1d56debSopenharmony_ci    fn ut_array_pop() {
305a1d56debSopenharmony_ci        let mut array = array!(1);
306a1d56debSopenharmony_ci        assert_eq!(array.pop(), Some(JsonValue::new_number(1.into())));
307a1d56debSopenharmony_ci        assert_eq!(array.pop(), None);
308a1d56debSopenharmony_ci    }
309a1d56debSopenharmony_ci
310a1d56debSopenharmony_ci    /// UT test for `Array::iter_mut`.
311a1d56debSopenharmony_ci    ///
312a1d56debSopenharmony_ci    /// # Title
313a1d56debSopenharmony_ci    /// ut_array_iter_mut
314a1d56debSopenharmony_ci    ///
315a1d56debSopenharmony_ci    /// # Brief
316a1d56debSopenharmony_ci    /// 1. Creates some `Array`s.
317a1d56debSopenharmony_ci    /// 2. Calls `Array::iter_mut`.
318a1d56debSopenharmony_ci    /// 3. Checks if the test results are correct.
319a1d56debSopenharmony_ci    #[test]
320a1d56debSopenharmony_ci    fn ut_array_iter_mut() {
321a1d56debSopenharmony_ci        let mut array = array!(1);
322a1d56debSopenharmony_ci        let mut iter = array.iter_mut();
323a1d56debSopenharmony_ci        assert_eq!(iter.next(), Some(&mut JsonValue::new_number(1.into())));
324a1d56debSopenharmony_ci        assert_eq!(iter.next(), None);
325a1d56debSopenharmony_ci    }
326a1d56debSopenharmony_ci
327a1d56debSopenharmony_ci    /// UT test for `Array::last`.
328a1d56debSopenharmony_ci    ///
329a1d56debSopenharmony_ci    /// # Title
330a1d56debSopenharmony_ci    /// ut_array_last
331a1d56debSopenharmony_ci    ///
332a1d56debSopenharmony_ci    /// # Brief
333a1d56debSopenharmony_ci    /// 1. Creates some `Array`s.
334a1d56debSopenharmony_ci    /// 2. Calls `Array::last`.
335a1d56debSopenharmony_ci    /// 3. Checks if the test results are correct.
336a1d56debSopenharmony_ci    #[test]
337a1d56debSopenharmony_ci    fn ut_array_last() {
338a1d56debSopenharmony_ci        let array = array!(1);
339a1d56debSopenharmony_ci        assert_eq!(array.last(), Some(&JsonValue::new_number(1.into())));
340a1d56debSopenharmony_ci
341a1d56debSopenharmony_ci        let array = Array::new();
342a1d56debSopenharmony_ci        assert_eq!(array.last(), None);
343a1d56debSopenharmony_ci    }
344a1d56debSopenharmony_ci
345a1d56debSopenharmony_ci    /// UT test for `Array::remove`.
346a1d56debSopenharmony_ci    ///
347a1d56debSopenharmony_ci    /// # Title
348a1d56debSopenharmony_ci    /// ut_array_remove
349a1d56debSopenharmony_ci    ///
350a1d56debSopenharmony_ci    /// # Brief
351a1d56debSopenharmony_ci    /// 1. Creates some `Array`s.
352a1d56debSopenharmony_ci    /// 2. Calls `Array::remove`.
353a1d56debSopenharmony_ci    /// 3. Checks if the test results are correct.
354a1d56debSopenharmony_ci    #[test]
355a1d56debSopenharmony_ci    fn ut_array_remove() {
356a1d56debSopenharmony_ci        let mut array = array!(1);
357a1d56debSopenharmony_ci        assert_eq!(array.remove(3), None);
358a1d56debSopenharmony_ci        assert_eq!(array.remove(0), Some(JsonValue::new_number(1.into())));
359a1d56debSopenharmony_ci    }
360a1d56debSopenharmony_ci
361a1d56debSopenharmony_ci    /// UT test for `Array::eq`.
362a1d56debSopenharmony_ci    ///
363a1d56debSopenharmony_ci    /// # Title
364a1d56debSopenharmony_ci    /// ut_array_eq
365a1d56debSopenharmony_ci    ///
366a1d56debSopenharmony_ci    /// # Brief
367a1d56debSopenharmony_ci    /// 1. Creates some `Array`s.
368a1d56debSopenharmony_ci    /// 2. Calls `Array::eq`.
369a1d56debSopenharmony_ci    /// 3. Checks if the test results are correct.
370a1d56debSopenharmony_ci    #[test]
371a1d56debSopenharmony_ci    fn ut_array_eq() {
372a1d56debSopenharmony_ci        let array1 = array!(1);
373a1d56debSopenharmony_ci        let array2 = array!(1, 2);
374a1d56debSopenharmony_ci        let array3 = array!(1, 3);
375a1d56debSopenharmony_ci
376a1d56debSopenharmony_ci        assert_eq!(array1, array1);
377a1d56debSopenharmony_ci        assert_ne!(array1, array2);
378a1d56debSopenharmony_ci        assert_ne!(array2, array3);
379a1d56debSopenharmony_ci    }
380a1d56debSopenharmony_ci
381a1d56debSopenharmony_ci    /// UT test for `Array::fmt`.
382a1d56debSopenharmony_ci    ///
383a1d56debSopenharmony_ci    /// # Title
384a1d56debSopenharmony_ci    /// ut_array_fmt
385a1d56debSopenharmony_ci    ///
386a1d56debSopenharmony_ci    /// # Brief
387a1d56debSopenharmony_ci    /// 1. Creates some `Array`s.
388a1d56debSopenharmony_ci    /// 2. Calls `Array::fmt`.
389a1d56debSopenharmony_ci    /// 3. Checks if the test results are correct.
390a1d56debSopenharmony_ci    #[test]
391a1d56debSopenharmony_ci    fn ut_array_fmt() {
392a1d56debSopenharmony_ci        let array = array!(1, 2);
393a1d56debSopenharmony_ci        assert_eq!(format!("{array}"), "[1,2]");
394a1d56debSopenharmony_ci        assert_eq!(format!("{array:?}"), "[1,2]");
395a1d56debSopenharmony_ci    }
396a1d56debSopenharmony_ci}
397