Cannot read past end of stream, MemoryStream

I have this test:

         [Test]
		public void FileOpenTest_ ()
		{
			// arrange
			ISaveLoadGameData slgdStub = Substitute.For<SaveLoadGameDataStub>();

			// act
			GameData data = slgdStub.FileOpen();
			
			// assert
			Assert.AreEqual(data.experience, GameDataDefaults.DEFAULT_EXPERIENCE);
		}
        public GameData FileOpen ()
		{
			bf = new BinaryFormatter();
			ms = DefaultsGameDataStream();
			data = (GameData)bf.Deserialize(ms);
			
			ms.Close();
			
			return data;
		}
        public MemoryStream DefaultsGameDataStream ()
		{
		 	MemoryStream defaultsMs = new MemoryStream();
			BinaryWriter defaultsBw = new BinaryWriter(defaultsMs);
			
			defaultsBw.Write(GameDataDefaults.DEFAULT_EXPERIENCE);
			defaultsBw.Write(GameDataDefaults.DEFAULT_SCORE);
			defaultsBw.Write(GameDataDefaults.DEFAULT_WIN_PERCENT);

                         return defaultsMs;
                }

With this error:

FileOpenTest_ (0.14s)
---
System.IO.EndOfStreamException : Failed to read past end of stream.
---
at System.IO.BinaryReader.ReadByte () [0x00047] in /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.IO/BinaryReader.cs:293
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.ReadBinaryHeader (System.IO.BinaryReader reader, System.Boolean& hasHeaders) [0x00000] in /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/BinaryFormatter.cs:267
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.NoCheckDeserialize (System.IO.Stream serializationStream, System.Runtime.Remoting.Messaging.HeaderHandler handler) [0x00039] in /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/BinaryFormatter.cs:161
at System.Runtime.Serialization.Formatters.Binary.BinaryFormatter.Deserialize (System.IO.Stream serializationStream) [0x00000] in /Users/builduser/buildslave/mono-runtime-and-classlibs/build/mcs/class/corlib/System.Runtime.Serialization.Formatters.Binary/BinaryFormatter.cs:136
at Assets.UnityTestTools.UnitTesting.Editor.AritmetikoUnitTests.Stubs.SaveLoadGameDataStub.FileOpen () [0x00017] in D:\svnrepo	runk\Aritmetiko\Assets\UnityTestTools\UnitTesting\Editor\AritmetikoUnitTests\Stubs\SaveLoadGameDataStub.cs:208
at Assets.UnityTestTools.UnitTesting.Editor.AritmetikoUnitTests.SaveLoadGameDataTests.FileOpenTest_ () [0x0000c] in D:\svnrepo	runk\Aritmetiko\Assets\UnityTestTools\UnitTesting\Editor\AritmetikoUnitTests\SaveLoadGameDataTests.cs:429

Not sure why it gives an error. Any ideas?

I rewrote FileOpen() to:

        public GameData FileOpen ()
		{
			bf = new BinaryFormatter();
			ms = new MemoryStream(DefaultsGameDataStream());
			BinaryReader br = new BinaryReader(ms);
			data = new GameData();
			data.experience = br.ReadSingle();
			data.score = br.ReadSingle();
			data.winPercent = br.ReadSingle();
			
			ms.Close();
			
			return data;
		}