public void Transfer()
        {
            var twoAccounts = Context(delegate
            {
                var from = new Account("A");
                var to = new Account("B");
                from.Deposit(100);
                return new { from, to };
            });

            Given(twoAccounts)
            .When(c => c.from.Transfer(25, c.to))
            .Then(c => c.from.Balance == 75)
             .And(c => c.to.Balance == 25);
        }
Example #2
0
        static void Main(string[] args)
        {
            /**
             * Alle Teile des APIs, die einen angemeldeten Benutzer erfordern, werden auf die Account-Klasse zurückgreifen.
             * Sitzungsverwaltung erfolgt hier.
             */
            Account nutzer = new Account(userName);

            // Der erstellte Benutzer wird eingeloggt:
            nutzer.login(password);

            // Als Beweis für einen erfolgreichen Login fragen wir unseren Sitzungsstatus bei Proxer an. Der Parameter true
            // erzwingt hier eine Anfrage an Proxer. Im Normalfall ist diese überflüssig, da sich der Sitzungsstatus nur selten
            // ändert.
            Console.WriteLine("Der Benutzer ist angemeldet? --> " + nutzer.isLoggedIn());

            // Am Ende können wir die Sitzung des Nutzers auch wieder beenden, dies ist normalerweise überflüssig, da Sitzungen nach
            // 60 Minuten ablaufen. Allerdings ist ein explizites Abmelden nie eine schlechte Idee, also bleibt hier die Möglichkeit.
            nutzer.logout();

            if (!nutzer.updateNotifications())
                Console.WriteLine("Ungelesene Nachrichten verfügbar!");
            if (nutzer.notifications.news > 0)
                Console.WriteLine("Neue News verfügbar: " + nutzer.notifications.news);

            /*
                libProxer unterstützt die Nachrichten von Proxer über die News-Klasse. Darin enthalten ist die Funktion getNews(), die eine Liste der Artikel
                zurückliefert. Diese ist implementiert als "Lazy-Load", lädt also die Artikel erst, wenn sie angefragt werden (in 15 Artikel Blöcken).
             */

            // Nachrichtenliste erhalten
            News proxerNews = new News();
            var nachrichten = proxerNews.getNews();

            // Wir werden nur die ersten zehn Nachrichten verwenden, ein Iterieren durch die Liste aller Nachrichten mit foreach-Schleife ist
            // möglich, aber nicht empfohlen. (Wie weit gehen die Proxer-Nachrichten zurück, die abrufbar sind? Keine Ahnung...)
            nachrichten = nachrichten.Take(10);

            foreach (Article article in nachrichten)
            {
                Console.WriteLine(article.author + " schreibt: " + article.title);
            }

            Console.ReadKey();
        }
Example #3
0
 public void Transfer(int amount, Account account)
 {
     Balance -= amount;
     account.Deposit(amount);
 }