package net.zero918nobita.Xemime;

import org.junit.Test;

import java.util.HashMap;
import java.util.TreeMap;

import static org.junit.Assert.assertThat;
import static org.hamcrest.CoreMatchers.is;
import static org.hamcrest.CoreMatchers.nullValue;

public class FrameTest {
    @Test
    public void test() throws Exception {
        // グローバルの文字列型変数 variable を宣言し、"global" で初期化する
        Main.defValue(new X_Symbol("variable"), new X_String("global"));
        // ローカル変数のフレームを追加する
        Main.loadLocalFrame(new HashMap<>());
        // ローカルの文字列型変数 variable を宣言し、"local" で初期化する
        Main.defValue(new X_Symbol("variable"), new X_String("local"));
        // フレームの階層数が 1 であることを確認する
        assertThat(Main.frame.numberOfLayers(), is(1));
        // シンボル variable の参照先がローカル変数であることを確認する
        assertThat(Main.getValueOfSymbol(new X_Symbol("variable")), is(new X_String("local")));
        // フレームを破棄する
        Main.unloadLocalFrame();
        // シンボル variable の参照先がグローバル変数であることを確認する
        assertThat(Main.getValueOfSymbol(new X_Symbol("variable")), is(new X_String("global")));
        // フレームの階層数が 0 であることを確認する
        assertThat(Main.frame.numberOfLayers(), is(0));
    }

    @Test
    public void testGetValueOfSymbol() {
        Frame frame = new Frame();
        assertThat(frame.getValueOfSymbol(new X_Symbol("unknown"), new TreeMap<>()), nullValue());
    }
}

@@ -244,16 +244,97 @@
 Value;%0A%0A
+/**%0A * net.zero918nobita.Xemime.Frame %E3%81%AE%E3%83%86%E3%82%B9%E3%83%88%E3%82%AF%E3%83%A9%E3%82%B9%E3%81%A7%E3%81%99%E3%80%82%0A * @author Kodai Matsumoto%0A */%0A%0A
 public c
@@ -1334,32 +1334,89 @@
  = new Frame();%0A
+        // %E6%9C%AA%E5%AE%A3%E8%A8%80%E3%81%AE%E3%82%B7%E3%83%B3%E3%83%9C%E3%83%AB unknown %E3%81%AE%E5%80%A4%E3%82%92%E5%8F%96%E5%BE%97%E3%81%97%E3%82%88%E3%81%86%E3%81%A8%E3%81%99%E3%82%8B%E3%81%A8 null %E3%81%8C%E8%BF%94%E3%82%8B%E3%81%93%E3%81%A8%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B%0A
         assertTh
@@ -1503,11 +1503,382 @@
 );%0A    %7D
+%0A%0A    @Test%0A    public void testGetAddressOfSymbol() throws Exception %7B%0A        Frame frame = new Frame();%0A        frame.loadLocalFrame(new HashMap%3C%3E());%0A        X_Address address = Main.register(new X_String(%22value%22));%0A        frame.defAddress(new X_Symbol(%22variable%22), address);%0A        assertThat(frame.getAddressOfSymbol(new X_Symbol(%22variable%22)), is(address));%0A    %7D
 %0A%7D%0A

Update FrameTest