// Copyright 2017 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

fn main() {
    println!("Hello, world!");
    println!("Hello, world!");
    println!("Hello, world!");
    println!("Hello, world!");
    println!("Hello, world!");
    println!("Hello, world!");
    println!("Hello, world!");
}

#[cfg(test)]
mod tests {

    use fuchsia_zircon::{Channel, ChannelOpts};

    #[test]
    fn noop_test() {}

    #[test]
    fn channel_call_test() {
        // Create a pair of channels
        let (p1, p2) = Channel::create(ChannelOpts::Normal).expect("Channel::create failed");
    }
}
