02-flipper-contract.rs 877 Bytes
Newer Older
1
use ink_lang as ink;
2

3
#[ink::contract]
4
5
mod flipper {
    #[ink(storage)]
6
    pub struct Flipper {
7
        value: bool,
8
9
10
11
    }

    impl Flipper {
        #[ink(constructor)]
12
        pub fn new(init_value: bool) -> Self {
13
            Self { value: init_value }
14
15
16
        }

        #[ink(constructor)]
17
        pub fn default() -> Self {
18
            Self::new(false)
19
20
21
        }

        #[ink(message)]
22
        pub fn flip(&mut self) {
23
            self.value = !self.value;
24
25
26
        }

        #[ink(message)]
27
        pub fn get(&self) -> bool {
28
            self.value
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
        }
    }

    #[cfg(test)]
    mod tests {
        use super::*;

        #[test]
        fn it_works() {
            let mut flipper = Flipper::new(false);
            assert_eq!(flipper.get(), false);
            flipper.flip();
            assert_eq!(flipper.get(), true);
        }
    }
}

fn main() {}