Skip to content

Commit baaa042

Browse files
chore: initial commit
0 parents  commit baaa042

File tree

103 files changed

+6239
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

103 files changed

+6239
-0
lines changed

.gitignore

+126
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,126 @@
1+
# Build Folders (you can keep bin if you'd like, to store dlls and pdbs)
2+
[Bb]in/
3+
[Oo]bj/
4+
5+
# mstest test results
6+
TestResults
7+
8+
## Ignore Visual Studio temporary files, build results, and
9+
## files generated by popular Visual Studio add-ons.
10+
11+
# User-specific files
12+
*.suo
13+
*.user
14+
*.sln.docstates
15+
*.sln.DotSettings
16+
17+
# Build results
18+
build
19+
[Dd]ebug/
20+
[Rr]elease/
21+
x64/
22+
*_i.c
23+
*_p.c
24+
*.ilk
25+
*.meta
26+
*.obj
27+
*.pch
28+
*.pdb
29+
*.pgc
30+
*.pgd
31+
*.rsp
32+
*.sbr
33+
*.tlb
34+
*.tli
35+
*.tlh
36+
*.tmp
37+
*.log
38+
*.vspscc
39+
*.vssscc
40+
.builds
41+
.vs
42+
43+
# Visual C++ cache files
44+
ipch/
45+
*.aps
46+
*.ncb
47+
*.opensdf
48+
*.sdf
49+
50+
# Visual Studio profiler
51+
*.psess
52+
*.vsp
53+
*.vspx
54+
55+
# Guidance Automation Toolkit
56+
*.gpState
57+
58+
# ReSharper is a .NET coding add-in
59+
_ReSharper*
60+
61+
# NCrunch
62+
*.ncrunch*
63+
.*crunch*.local.xml
64+
65+
# Installshield output folder
66+
[Ee]xpress
67+
68+
# DocProject is a documentation generator add-in
69+
DocProject/buildhelp/
70+
DocProject/Help/*.HxT
71+
DocProject/Help/*.HxC
72+
DocProject/Help/*.hhc
73+
DocProject/Help/*.hhk
74+
DocProject/Help/*.hhp
75+
DocProject/Help/Html2
76+
DocProject/Help/html
77+
78+
# Click-Once directory
79+
publish
80+
81+
# Publish Web Output
82+
*.Publish.xml
83+
84+
# NuGet Packages Directory
85+
packages
86+
87+
# Windows Azure Build Output
88+
csx
89+
*.build.csdef
90+
91+
# Windows Store app package directory
92+
AppPackages/
93+
94+
# Others
95+
[Bb]in
96+
[Oo]bj
97+
TestResults
98+
[Tt]est[Rr]esult*
99+
*.Cache
100+
ClientBin
101+
[Ss]tyle[Cc]op.*
102+
~$*
103+
*.dbmdl
104+
Generated_Code #added for RIA/Silverlight projects
105+
106+
# Backup & report files from converting an old project file to a newer
107+
# Visual Studio version. Backup files are not needed, because we have git ;-)
108+
_UpgradeReport_Files/
109+
Backup*/
110+
UpgradeLog*.XML
111+
GlobalAssemblyInfo.cs
112+
distribution
113+
node_modules
114+
apps
115+
.destiny
116+
.grunt
117+
_SpecRunner.html
118+
source/stash/Logs
119+
120+
#runtime folder
121+
runtime_env/
122+
source/.vs/
123+
124+
#libs
125+
lib/x86/bass_zipstream*
126+
lib/x64/bass_zipstream*

MD.Net.Tests/ActionBuilderTests.cs

+93
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
using NUnit.Framework;
2+
using Rhino.Mocks;
3+
using System;
4+
using System.Linq;
5+
6+
namespace MD.Net.Tests
7+
{
8+
[TestFixture]
9+
public class ActionBuilderTests
10+
{
11+
[TestCase("Original Title", "New Title")]
12+
public void UpdateDiscTitle(string currentTitle, string updatedTitle)
13+
{
14+
var formatManager = MockRepository.GenerateStub<IFormatManager>();
15+
var discActionBuilder = new ActionBuilder(formatManager);
16+
var device = default(IDevice);
17+
var currentDisc = new Disc(currentTitle, TimeSpan.Zero, TimeSpan.Zero, TimeSpan.Zero, Tracks.None);
18+
var updatedDisc = new Disc(currentDisc)
19+
{
20+
Title = updatedTitle
21+
};
22+
var actions = discActionBuilder.GetActions(device, currentDisc, updatedDisc);
23+
Assert.AreEqual(1, actions.Count);
24+
var action = actions.First() as UpdateDiscTitleAction;
25+
Assert.IsNotNull(action);
26+
}
27+
28+
[TestCase("Original Name", "New Name")]
29+
public void UpdateTrackName(string currentName, string updatedName)
30+
{
31+
var formatValidator = MockRepository.GenerateStub<IFormatValidator>();
32+
var formatManager = MockRepository.GenerateStub<IFormatManager>();
33+
var discActionBuilder = new ActionBuilder(formatManager);
34+
var device = default(IDevice);
35+
var track1 = new Track(0, Protection.None, Compression.None, TimeSpan.Zero, string.Empty);
36+
var track2 = new Track(1, Protection.None, Compression.None, TimeSpan.Zero, currentName);
37+
var track3 = new Track(2, Protection.None, Compression.None, TimeSpan.Zero, string.Empty);
38+
var currentDisc = new Disc(string.Empty, TimeSpan.Zero, TimeSpan.Zero, TimeSpan.Zero, new Tracks(formatValidator, new[] { track1, track2, track3 }));
39+
var updatedDisc = new Disc(currentDisc);
40+
updatedDisc.Tracks[1].Name = updatedName;
41+
var actions = discActionBuilder.GetActions(device, currentDisc, updatedDisc);
42+
Assert.AreEqual(1, actions.Count);
43+
var action = actions.First() as UpdateTrackNameAction;
44+
Assert.IsNotNull(action);
45+
Assert.IsTrue(object.ReferenceEquals(currentDisc.Tracks[1], action.CurrentTrack));
46+
Assert.IsTrue(object.ReferenceEquals(updatedDisc.Tracks[1], action.UpdatedTrack));
47+
}
48+
49+
[TestCase(@"C:\My Music\Test.wav", Compression.None, "00:03:30", "This is a test.")]
50+
public void AddTrack(string location, Compression compression, TimeSpan time, string name)
51+
{
52+
var formatValidator = MockRepository.GenerateStub<IFormatValidator>();
53+
formatValidator.Expect(fm => fm.Validate(Arg<string>.Is.Equal(location), out Arg<TimeSpan>.Out(time).Dummy));
54+
var formatManager = MockRepository.GenerateStub<IFormatManager>();
55+
var discActionBuilder = new ActionBuilder(formatManager);
56+
var device = default(IDevice);
57+
var track1 = new Track(0, Protection.None, Compression.None, TimeSpan.Zero, string.Empty);
58+
var track2 = new Track(1, Protection.None, Compression.None, TimeSpan.Zero, string.Empty);
59+
var track3 = new Track(2, Protection.None, Compression.None, TimeSpan.Zero, string.Empty);
60+
var currentDisc = new Disc(string.Empty, TimeSpan.Zero, TimeSpan.Zero, TimeSpan.Zero, new Tracks(formatValidator, new[] { track1, track2, track3 }));
61+
var updatedDisc = new Disc(currentDisc);
62+
var track = updatedDisc.Tracks.Add(location, compression);
63+
Assert.AreEqual(time, track.Time);
64+
track.Name = name;
65+
var actions = discActionBuilder.GetActions(device, currentDisc, updatedDisc);
66+
Assert.AreEqual(1, actions.Count);
67+
var action = actions.First() as AddTrackAction;
68+
Assert.IsNotNull(action);
69+
Assert.IsTrue(object.ReferenceEquals(action.UpdatedTrack, track));
70+
}
71+
72+
[Test]
73+
public void RemoveTrack()
74+
{
75+
var formatValidator = MockRepository.GenerateStub<IFormatValidator>();
76+
var formatManager = MockRepository.GenerateStub<IFormatManager>();
77+
var discActionBuilder = new ActionBuilder(formatManager);
78+
var device = default(IDevice);
79+
var track1 = new Track(0, Protection.None, Compression.None, TimeSpan.Zero, string.Empty);
80+
var track2 = new Track(1, Protection.None, Compression.None, TimeSpan.Zero, string.Empty);
81+
var track3 = new Track(2, Protection.None, Compression.None, TimeSpan.Zero, string.Empty);
82+
var currentDisc = new Disc(string.Empty, TimeSpan.Zero, TimeSpan.Zero, TimeSpan.Zero, new Tracks(formatValidator, new[] { track1, track2, track3 }));
83+
var updatedDisc = new Disc(currentDisc);
84+
var track = updatedDisc.Tracks[1];
85+
updatedDisc.Tracks.Remove(track);
86+
var actions = discActionBuilder.GetActions(device, currentDisc, updatedDisc);
87+
Assert.AreEqual(1, actions.Count);
88+
var action = actions.First() as RemoveTrackAction;
89+
Assert.IsNotNull(action);
90+
Assert.IsTrue(object.ReferenceEquals(action.CurrentTrack, currentDisc.Tracks[track.Position]));
91+
}
92+
}
93+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
using NUnit.Framework;
2+
using Rhino.Mocks;
3+
using System;
4+
using System.Diagnostics;
5+
6+
namespace MD.Net.Tests
7+
{
8+
[TestFixture]
9+
public class AddTrackActionTests
10+
{
11+
[TestCase(@"C:\My Music\Test.wav", Compression.None)]
12+
public void Apply(string location, Compression compression)
13+
{
14+
var track = new Track(0, Protection.None, compression, TimeSpan.Zero, string.Empty)
15+
{
16+
Location = location
17+
};
18+
var toolManager = MockRepository.GenerateStrictMock<IToolManager>();
19+
toolManager.Expect(tm => tm.Start(Tools.NETMDCLI, string.Format("{0} {1} \"{2}\"", Constants.NETMDCLI_VERBOSE, Constants.NETMDCLI_SEND, track.Location)));
20+
toolManager.Expect(tm => tm.Exec(Arg<Process>.Is.Anything, Arg<Action<string>>.Is.Anything, Arg<Action<string>>.Is.Anything)).WhenCalled(invocation =>
21+
{
22+
Utility.EmitLines(Resources.Send_SP, invocation.Arguments[1] as Action<string>);
23+
}).Return(0);
24+
var status = MockRepository.GenerateStrictMock<IStatus>();
25+
for (var a = 0; a <= 100; a++)
26+
{
27+
status.Expect(s => s.Update(Arg<string>.Is.Anything, Arg<int>.Is.Equal(a), Arg<int>.Is.Equal(100), Arg<StatusType>.Is.Equal(StatusType.Transfer))).Repeat.Once();
28+
}
29+
var formatManager = MockRepository.GenerateStub<IFormatManager>();
30+
formatManager.Expect(fm => fm.Convert(location, compression, status)).Return(location);
31+
var action = new AddTrackAction(formatManager, Device.None, Disc.None, Disc.None, track);
32+
action.Prepare(toolManager, status);
33+
action.Apply(toolManager, status);
34+
action.Commit();
35+
status.VerifyAllExpectations();
36+
}
37+
}
38+
}

MD.Net.Tests/CapacityTests.cs

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
using NUnit.Framework;
2+
using System;
3+
4+
namespace MD.Net.Tests
5+
{
6+
[TestFixture]
7+
public class CapacityTests
8+
{
9+
[Test]
10+
public void Capacity()
11+
{
12+
var disc = new Disc(string.Empty, TimeSpan.Zero, TimeSpan.FromMinutes(80), TimeSpan.FromMinutes(80), Tracks.None);
13+
disc.Tracks.Add(new Track(0, Protection.None, Compression.None, TimeSpan.FromMinutes(3.5), string.Empty));
14+
disc.Tracks.Add(new Track(1, Protection.None, Compression.LP2, TimeSpan.FromMinutes(3.5), string.Empty));
15+
disc.Tracks.Add(new Track(2, Protection.None, Compression.LP4, TimeSpan.FromMinutes(3.5), string.Empty));
16+
var capacity = new Capacity(disc);
17+
Assert.AreEqual(7, capacity.PercentUsed);
18+
Assert.AreEqual(93, capacity.PercentFree);
19+
}
20+
}
21+
}

MD.Net.Tests/DeviceManagerTests.cs

+47
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,47 @@
1+
using NUnit.Framework;
2+
using Rhino.Mocks;
3+
using System.Diagnostics;
4+
using System.Linq;
5+
6+
namespace MD.Net.Tests
7+
{
8+
[TestFixture]
9+
public class DeviceManagerTests
10+
{
11+
[TestCase("no netmd device")]
12+
[TestCase("netmd_poll failed")]
13+
[TestCase("")]
14+
public void NoDevices(string output)
15+
{
16+
var toolManager = MockRepository.GenerateStub<IToolManager>();
17+
toolManager.Expect(tm => tm.Start(Tools.NETMDCLI)).Return(null);
18+
toolManager.Expect(tm => tm.Exec(Arg<Process>.Is.Anything, out Arg<string>.Out(output).Dummy, out Arg<string>.Out(string.Empty).Dummy)).Return(0);
19+
var deviceManager = new DeviceManager(toolManager);
20+
var devices = deviceManager.GetDevices();
21+
Assert.IsFalse(devices.Any());
22+
}
23+
24+
[Test]
25+
public void NoDisk()
26+
{
27+
var toolManager = MockRepository.GenerateStub<IToolManager>();
28+
toolManager.Expect(tm => tm.Start(Tools.NETMDCLI)).Return(null);
29+
toolManager.Expect(tm => tm.Exec(Arg<Process>.Is.Anything, out Arg<string>.Out(Resources.Sony_MDS_JE780___No_Disk).Dummy, out Arg<string>.Out(string.Empty).Dummy)).Return(0);
30+
var deviceManager = new DeviceManager(toolManager);
31+
var devices = deviceManager.GetDevices();
32+
var device = devices.SingleOrDefault();
33+
Assert.IsNotNull(device);
34+
Assert.AreEqual("Sony MDS-JE780/JB980", device.Name);
35+
}
36+
37+
[Test]
38+
public void Erase()
39+
{
40+
var toolManager = MockRepository.GenerateStub<IToolManager>();
41+
toolManager.Expect(tm => tm.Start(Tools.NETMDCLI, Constants.NETMDCLI_ERASE)).Return(null);
42+
toolManager.Expect(tm => tm.Exec(Arg<Process>.Is.Anything, out Arg<string>.Out(string.Empty).Dummy, out Arg<string>.Out(string.Empty).Dummy)).Return(0);
43+
var deviceManager = new DeviceManager(toolManager);
44+
deviceManager.Erase(Device.None);
45+
}
46+
}
47+
}

MD.Net.Tests/DeviceMonitorTests.cs

+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
using NUnit.Framework;
2+
using System;
3+
using System.Threading;
4+
5+
namespace MD.Net.Tests
6+
{
7+
[TestFixture]
8+
public class DeviceMonitorTests
9+
{
10+
[Test]
11+
[Explicit]
12+
public void Enable()
13+
{
14+
using (var deviceMonitor = new DeviceMonitor())
15+
{
16+
deviceMonitor.Added += this.OnAdded;
17+
deviceMonitor.Removed += this.OnRemoved;
18+
deviceMonitor.Enable();
19+
Thread.Sleep(TimeSpan.FromMinutes(1));
20+
deviceMonitor.Disable();
21+
}
22+
}
23+
24+
protected void OnAdded(object sender, DeviceMonitorEventArgs e)
25+
{
26+
TestContext.WriteLine("Added: {0} (Vendor={1},Product={2},Serial={3})", e.Path, e.VendorId, e.ProductId, e.SerialNumber);
27+
}
28+
29+
protected void OnRemoved(object sender, DeviceMonitorEventArgs e)
30+
{
31+
TestContext.WriteLine("Removed: {0} (Vendor={1},Product={2},Serial={3})", e.Path, e.VendorId, e.ProductId, e.SerialNumber);
32+
}
33+
}
34+
}

0 commit comments

Comments
 (0)