This is the twenty-first of a new series of posts on ASP .NET Core 3.1 for 2020. In this series, we'll cover 26 topics over a span of 26 weeks from January through June 2020, titled ASP .NET Core A-Z! To differentiate from the 2019 series, the 2020 series will mostly focus on a growing single codebase (NetLearner!) instead of new unrelated code snippets week.
- Sep 11, 2012 Comodo Unite 3.0.2.0 is available to all software users as a free download for Windows 10 PCs but also without a hitch on Windows 7 and Windows 8. Compatibility with this software may vary, but will generally run fine under Microsoft Windows 10, Windows 8, Windows 8.1, Windows 7, Windows Vista and Windows XP on either a 32-bit or 64-bit setup.
- Find the resultant of these two vectors: 2.00x10^2 units due east and 4.00x10^2 units 30.0 degrees north of west 29 cm An ant on a picnic table travels 3.0x10^1 cm eastward, then 25 cm northward, and finally 15 cm westward.
- 1.0 out of 5 stars Defective unit. Reviewed in the United States on September 21, 2020. Verified Purchase. Did a owner install, my 3rd one and had the unit quit.
Previous post:
Httponly cookie. About Sterndrive Replacement. Sterndrive Replacement is a company unlike any other in the sale of aftermarket MerCruiser's Sterndrive, Alpha One Generation 1, Alpha One Generation 2, Bravo 1, our stern drive designed to replace Mercury Marine's Mercruiser®, Alpha One®, R, MR, Gen 2. The creator of Spider-Man died on November 12, 2018. Add your photo to the mosaic and honor his great work.
NetLearner on GitHub:
- Repository: https://github.com/shahedc/NetLearnerApp
- v0.21-alpha release: https://github.com/shahedc/NetLearnerApp/releases/tag/v0.21-alpha
Whether you're practicing TDD (Test-Driven Development) or writing your tests after your application code, there's no doubt that unit testing is essential for web application development. When it's time to pick a testing framework, there are multiple alternatives such as xUnit.net, NUnit and MSTest. This article will focus on xUnit.net because of its popularity (and similarity to its alternatives) when compared to the other testing frameworks.
In a nutshell: a unit test is code you can write to test your application code. Your web application will not have any knowledge of your test project, but your test project will need to have a dependency of the app project that it's testing.
Here are some poll results, from asking 500+ developers about which testing framework they prefer, showing xUnit.net in the lead (from May 2019).
- Twitter poll: https://twitter.com/shahedC/status/1131337874903896065
A similar poll on Facebook also showed xUnit.net leading ahead of other testing frameworks. If you need to see the equivalent attributes and assertions, check out the comparison table provided by xUnit.net:
- Comparing xUnit.net to other frameworks: https://xunit.net/docs/comparisons
To follow along, take a look at the test projects on Github:
- Shared Library tests: https://github.com/shahedc/NetLearnerApp/tree/main/src/NetLearner.SharedLib.Tests
- MVC tests: https://github.com/shahedc/NetLearnerApp/tree/main/src/NetLearner.Mvc.Tests
- Razor Pages tests: https://github.com/shahedc/NetLearnerApp/tree/main/src/NetLearner.Pages.Tests
- Blazor tests: https://github.com/shahedc/NetLearnerApp/tree/main/src/NetLearner.Blazor.Tests
The quickest way to set up unit testing for an ASP .NET Core web app project is to create a new test project using a template. This creates a cross-platform .NET Core project that includes one blank test. In Visual Studio 2019, search for '.net core test project' when creating a new project to identify test projects for MSTest, XUnit and NUnit. Select the XUnit project to follow along with the NetLearner samples.
The placeholder unit test class includes a blank test. Typically, you could create a test class for each application class being tested. The simplest unit test usually includes three distinct steps: Arrange, Act and Assert.
- Arrange: Set up the any variables and objects necessary.
- Act: Call the method being tested, passing any parameters needed
- Assert: Verify expected results
The unit test project should have a dependency for the app project that it's testing. In the test project file NetLearner.Mvc.Tests.csproj, you'll find a reference to NetLearner.Mvc.csproj.
In the Solution Explorer panel, you should see a project dependency of the reference project.
If you need help adding reference projects using CLI commands, check out the official docs at: Adobe lightroom classic cc 8 3 1.
- Unit testing C# code in .NET Core using dotnet test and xUnit: https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-dotnet-test#creating-the-test-project
When you add a new xUnit test project, you should get a simple test class (UnitTest1) with an empty test method (Test1). This test class should be a public class and the test method should be decorated with a [Fact] attribute. The attribute indicates that this is a test method without any parameters, e.g. Test1().
In the NetLearner Shared Library test project, you'll see a test class (ResourceListServiceTests.cs) with a series of methods that take 1 or more parameters. Instead of a [Fact] attribute, each method has a [Theory] attribute. In addition to this primary attribute, each [Theory] attribute is followed by one of more [InlineData] attributes that have sample argument values for each method parameter.
In the code sample, each occurrence of [InlineData] should reflect the test method's parameters, e.g.
- [InlineData('RL1')] –> this implies that expectedName = 'RL1'
NOTE: If you want to skip a method during your test runs, simply add a Skip parameter to your Fact or Theory with a text string for the 'Reason'.
e.g.
- [Fact(Skip='this is broken')]
- [Theory(Skip='we should skip this too')]
Back to the 3-step process, let's explore the TestAdd() method and its method body.
- During the Arrange step, we create a new instance of an object called ResourceList which will be used during the test.
- During the Act step, we create a ResourceListService object to be tested, and then call its Add() method to pass along a string value that was assigned via InlineData.
- During the Assert step, we compare the expectedName (passed by InlineData) with the returned result (obtained from a call to the Get method in the service being tested).
The Assert.Equal() method is a quick way to check whether an expected result is equal to a returned result. If they are equal, the test method will pass. Otherwise, the test will fail. There is also an Assert.True() method that can take in a boolean value, and will pass the test if the boolean value is true.
For a complete list of Assertions in xUnit.net, refer to the Assertions section of the aforementioned comparison table:
- Assertions in unit testing frameworks: https://xunit.net/docs/comparisons#assertions
If an exception is expected, you can assert a thrown exception. In this case, the test passes if the exception occurs. Keep in mind that unit tests are for testing expected scenarios. You can only test for an exception if you know that it will occur, e.g.
The above code tests a method named MethodBeingTested() for someObject being tested. A SpecificException() is expected to occur when the parameter values x and y are passed in. In this case, the Act and Assert steps occur in the same statement.
NOTE: There are some differences in opinion whether or not to use InMemoryDatabase for unit testing. Here are some viewpoints from .NET experts Julie Lerman (popular Pluralsight author) and Nate Barbettini (author of the Little ASP .NET Core book):
- Julie Lerman: 'If you use it wisely and are benefiting (not as a replacement for integration tests) then they are AOK in my mind.'
- Source: https://twitter.com/julielerman/status/1259939718151770112
- Nate Barbettini: 'I still might use InMemory for early rapid prototyping work, but no longer use it for testing. I don't let any unit tests talk to the DB (pure classes and methods under test only), and no longer use InMemory for integration tests.'
- Source: https://twitter.com/nbarbettini/status/1259939958573248514
- Discussion on GitHub: https://github.com/dotnet/efcore/issues/18457
To run your unit tests in Visual Studio, use the Test Explorer panel.
- From the top menu, click Test | Windows | Test Explorer
- In the Test Explorer panel, click Run All
- Review the test status and summary
- If any tests fail, inspect the code and fix as needed.
To run your unit tests with a CLI Command, run the following command in the test project folder:
The results may look something like this:
As of xUnit version 2, tests can automatically run in parallel to save time. Test methods within a class are considered to be in the same implicit collection, and so will not be run in parallel. You can also define explicit collections using a [Collection] attribute to decorate each test class. Multiple test classes within the same collection will not be run in parallel.
For more information on collections, check out the official docs at:
- Running Tests in Parallel: https://xunit.net/docs/running-tests-in-parallel
NOTE: Visual Studio includes a Live Unit Testing feature that allows you to see the status of passing/failing tests as you're typing your code. This feature is only available in the Enterprise Edition of Visual Studio.
You may have noticed a DisplayName parameter when defining the [Theory] attribute in the code samples. This parameter allows you to defined a friendly name for any test method (Fact or Theory) that can be displayed in the Test Explorer. For example:
Using the above attribute above the TestAdd() method will show the friendly name 'Add New Learning Resource' in the Test Explorer panel during test runs.
Finally, consider the [Trait] attribute. This attribute can be use to categorize related test methods by assigning an arbitrary name/value pair for each defined 'Trait'. For example (from LearningResource and ResourceList tests, respectively):
Using the above attribute for the two TestAdd() methods will categorize the methods into their own named 'category', e.g. Learning Resource Tests and Resource List Tests. This makes it possible to filter just the test methods you want to see, e.g. Trait: 'Adding RL'
There is so much more to learn with unit testing. You could read several chapters or even an entire book on unit testing and related topics. To continue your learning in this area, consider the following:
- MemberData: use the MemberData attribute to go beyond isolated test methods. This allows you to reuse test values for multiples methods in the test class.
- ClassData: use the ClassData attribute to use your test data in multiple test classes. This allows you to specify a class that will pass a set of collections to your test method.
For more information on the above, check out this Nov 2017 post from Andrew Lock:
- Creating parameterised tests in xUnit with [InlineData], [ClassData], and [MemberData]: https://andrewlock.net/creating-parameterised-tests-in-xunit-with-inlinedata-classdata-and-memberdata/
To go beyond Unit Tests, consider the following:
- Mocking: use a mocking framework (e.g. Moq) to mock external dependencies that you shouldn't need to test from your own code.
- Integration Tests: use integration tests to go beyond isolated unit tests, to ensure that multiple components of your application are working correctly. This includes databases and file systems.
- UI Tests: test your UI components using a tool such as Selenium WebDriver or IDE in the language of your choice, e.g. C#. For browser support, you may use Chrome or Firefox extensions, so this includes the new Chromium-based Edge browser.
While this article only goes into the shared library, the same concepts carry over into the testing of each individual web app project (MVC, Razor Pages and Blazor). Refer to the following documentation and blog content for each:
- MVC unit tests in ASP .NET Core: https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/testing?view=aspnetcore-3.1
- Razor Pages unit tests in ASP.NET Core: https://docs.microsoft.com/en-us/aspnet/core/test/razor-pages-tests
- Blazor unit tests with bUnit (Preview): https://www.telerik.com/blogs/unit-testing-blazor-components-bunit-justmock
Refer to the NetLearner sample code for unit tests for each web project:
- MVC Controller: https://github.com/shahedc/NetLearnerApp/blob/main/src/NetLearner.Mvc.Tests/ResourceListsControllerTests.cs
- Razor Pages: https://github.com/shahedc/NetLearnerApp/blob/main/src/NetLearner.Pages.Tests/ResourceListPageTests.cs
- Blazor: https://github.com/shahedc/NetLearnerApp/blob/main/src/NetLearner.Blazor.Tests/BlazorTest.cs
In order to set up a shared service object to be used by the controller/page/component being tested, Moq is used to mock the service. For more information on Moq, check out their official documentation on GitHub:
- Moq on GitHub: https://github.com/Moq/moq4/wiki/Quickstart
For the Blazor testing project, the following references were consulted:
- Telerik Blazor Testing Guide (using bUnit beta 6): https://www.telerik.com/blogs/unit-testing-blazor-components-bunit-justmock
- bUnit on GitHub (currently at beta 7): https://github.com/egil/bunit
NOTE: Due to differences between bUnit beta 6 and 7, there are some differences between the Blazor guide and the NetLearner tests on Blazor. I started off with the Blazor guide, but made some notable changes.
- Instead of starting with a Razor Class Library template for the test project, I started with the xUnit Test Project template.
- There was no need to change the test project's target framework from .NET Standard to .NET Core 3.1 manually, since the test project template was already Core 3.1 when created.
- As per the bUnit guidelines, the test class should no longer be derived from the ComponentTestFixture class, which is now obsolete: https://github.com/egil/bunit/blob/6c66cc2c77bc8c25e7a2871de9517c2fbe6869dd/src/bunit.web/ComponentTestFixture.cs
- Instead, the test class is now derived from the TestContext class, as seen in the bUnit source code: https://github.com/egil/bunit/blob/6c66cc2c77bc8c25e7a2871de9517c2fbe6869dd/src/bunit.web/TestContext.cs
- Getting started: .NET Core with command line > xUnit.net: https://xunit.net/docs/getting-started/netcore/cmdline
- Running Tests in Parallel > xUnit.net: https://xunit.net/docs/running-tests-in-parallel
- Unit testing C# code in .NET Core using dotnet test and xUnit: https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-dotnet-test
- Test controller logic in ASP.NET Core: https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/testing
- Integration tests in ASP.NET Core: https://docs.microsoft.com/en-us/aspnet/core/test/integration-tests
- Razor Pages unit tests in ASP.NET Core: https://docs.microsoft.com/en-us/aspnet/core/test/razor-pages-tests
- Unit testing in .NET Core and .NET Standard – .NET Core: https://docs.microsoft.com/en-us/dotnet/core/testing/
- Integration tests with default Web Application Factory: https://docs.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-3.1#basic-tests-with-the-default-webapplicationfactory
- Introducing the .NET Core Unit Testing Framework (or: Why xUnit?): https://visualstudiomagazine.com/articles/2018/11/01/net-core-testing.aspx?m=1
- Writing xUnit Tests in .NET Core: https://visualstudiomagazine.com/articles/2018/11/01/xunit-tests-in-net-core.aspx
- Live Unit Testing – Visual Studio: https://docs.microsoft.com/en-us/visualstudio/test/live-unit-testing
- Mocks Aren't Stubs: https://martinfowler.com/articles/mocksArentStubs.html
- Mocking in .NET Core Tests with Moq: http://dontcodetired.com/blog/post/Mocking-in-NET-Core-Tests-with-Moq
- Moq – Unit Test In .NET Core App Using Mock Object: https://www.c-sharpcorner.com/article/moq-unit-test-net-core-app-using-mock-object/
- Fake Data with Bogus: https://github.com/bchavez/Bogus
0-0-1-3 is an alcohol abuseprevention program developed in 2004 at Francis E. Warren Air Force Base based on research by the National Institute on Alcohol Abuse and Alcoholism regarding binge drinking in college students.[1] This program was a command-led collaboration between unit leaders, base agencies, and base personnel that utilized a three-tiered approach: (1) identify and assist high risk drinkers; (2) Develop a base culture, supportive of safe and responsible behaviors, including recreational options; and (3) Partnering with the broader community to promote alcohol prevention.
Explanation of the name[edit]
0-0-1-3 stands for:[2]
- 0 underage drinking offenses
- 0 drinking and driving incidents (DUI's)
- 1 drink per hour
- 3 drinks per evening
The first two numbers reflect the law. One drink per hour is approximately the amount the body can metabolize. Three drinks per night was selected as a target below the amounts recognized by NIAAA as binge drinking (4 drinks for women, 5 drinks per men). In both national research and at FE Warren rates of injuries, assaults, criminal behavior and other problems increase dramatically with binge drinking.
Three tier approach[edit]
The first tier included screening of all personnel for binge drinking utilizing a measure such as the Alcohol Use Disorders Identification Test (AUDIT). Persons identified as possibly at risk were offered an alcohol screening consultation with the Alcohol and Drug Abuse Prevention and Treatment (ADAPT) program.[3] Consistent with Air Force policy[4] all active duty members who had alcohol-related misconduct incidents were also referred for evaluation. Based on evaluation results individuals were provided educational and motivational enhancement interventions, or if found to have a substance use disorder, entered into a treatment program.
The second tier included a primary prevention-level education of all personnel regarding low-risk alcohol use, hazards of binge drinking and illness, a social norming media campaign targeted and pilot-tested for both young adult and older adult groups, development and promotion of alternative recreational options, and use of disciplinary and legal consequences, among other actions. This included development of the name 0-0-1-3 as both a slogan and a guideline for low risk alcohol use. Personnel from the age range at highest risk for binge drinking, 18-25, were involved in development and execution of these actions.
The third tier included partnering with the Wyoming Governor's Council on Impaired Driving[5] and the Advisory Council for the Enforcing Underage Drinking Laws Program,[6] as well as local law enforcement, the Chamber of Commerce, and others to promote responsibility and safety regarding alcohol beverage sales, service, and use.
Initial results[edit]
Metrics collected in 2005 showed a '74% decrease in alcohol-related incidents such as driving violations, public drunkenness, domestic violence, sexual assault, thefts, and other infractions. The base also reported 81% fewer cases of underage drinking and 45% fewer drunken-driving arrests.'[7] Multiple other military bases adopted elements of the program including a grant-funded trials at five bases.[8][2][9][10][11][12] The program served as the model for the Air Force's Culture of Responsible Choices (CoRC) program.
A 0-0-1-3 program was also implemented by the senior administration of the United States Naval Academy in response to a string of alcohol-related incidents that generated a large amount of negative publicity during the 2005-2006 school year. Its primary aim there is to 'promote responsible alcohol use' within the brigade of midshipmen.
Although most health professionals recommend limiting alcohol consumption to 2-4 drinks per day for men, the three drink cap has contributed the most to its massive unpopularity among the brigade, as it is designed to ensure that no midshipman is able to achieve a blood alcohol content (BAC) level above the Maryland legal driving limit of 0.08 (even when not driving or operating machinery).
- Getting started: .NET Core with command line > xUnit.net: https://xunit.net/docs/getting-started/netcore/cmdline
- Running Tests in Parallel > xUnit.net: https://xunit.net/docs/running-tests-in-parallel
- Unit testing C# code in .NET Core using dotnet test and xUnit: https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-with-dotnet-test
- Test controller logic in ASP.NET Core: https://docs.microsoft.com/en-us/aspnet/core/mvc/controllers/testing
- Integration tests in ASP.NET Core: https://docs.microsoft.com/en-us/aspnet/core/test/integration-tests
- Razor Pages unit tests in ASP.NET Core: https://docs.microsoft.com/en-us/aspnet/core/test/razor-pages-tests
- Unit testing in .NET Core and .NET Standard – .NET Core: https://docs.microsoft.com/en-us/dotnet/core/testing/
- Integration tests with default Web Application Factory: https://docs.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-3.1#basic-tests-with-the-default-webapplicationfactory
- Introducing the .NET Core Unit Testing Framework (or: Why xUnit?): https://visualstudiomagazine.com/articles/2018/11/01/net-core-testing.aspx?m=1
- Writing xUnit Tests in .NET Core: https://visualstudiomagazine.com/articles/2018/11/01/xunit-tests-in-net-core.aspx
- Live Unit Testing – Visual Studio: https://docs.microsoft.com/en-us/visualstudio/test/live-unit-testing
- Mocks Aren't Stubs: https://martinfowler.com/articles/mocksArentStubs.html
- Mocking in .NET Core Tests with Moq: http://dontcodetired.com/blog/post/Mocking-in-NET-Core-Tests-with-Moq
- Moq – Unit Test In .NET Core App Using Mock Object: https://www.c-sharpcorner.com/article/moq-unit-test-net-core-app-using-mock-object/
- Fake Data with Bogus: https://github.com/bchavez/Bogus
0-0-1-3 is an alcohol abuseprevention program developed in 2004 at Francis E. Warren Air Force Base based on research by the National Institute on Alcohol Abuse and Alcoholism regarding binge drinking in college students.[1] This program was a command-led collaboration between unit leaders, base agencies, and base personnel that utilized a three-tiered approach: (1) identify and assist high risk drinkers; (2) Develop a base culture, supportive of safe and responsible behaviors, including recreational options; and (3) Partnering with the broader community to promote alcohol prevention.
Explanation of the name[edit]
0-0-1-3 stands for:[2]
- 0 underage drinking offenses
- 0 drinking and driving incidents (DUI's)
- 1 drink per hour
- 3 drinks per evening
The first two numbers reflect the law. One drink per hour is approximately the amount the body can metabolize. Three drinks per night was selected as a target below the amounts recognized by NIAAA as binge drinking (4 drinks for women, 5 drinks per men). In both national research and at FE Warren rates of injuries, assaults, criminal behavior and other problems increase dramatically with binge drinking.
Three tier approach[edit]
The first tier included screening of all personnel for binge drinking utilizing a measure such as the Alcohol Use Disorders Identification Test (AUDIT). Persons identified as possibly at risk were offered an alcohol screening consultation with the Alcohol and Drug Abuse Prevention and Treatment (ADAPT) program.[3] Consistent with Air Force policy[4] all active duty members who had alcohol-related misconduct incidents were also referred for evaluation. Based on evaluation results individuals were provided educational and motivational enhancement interventions, or if found to have a substance use disorder, entered into a treatment program.
The second tier included a primary prevention-level education of all personnel regarding low-risk alcohol use, hazards of binge drinking and illness, a social norming media campaign targeted and pilot-tested for both young adult and older adult groups, development and promotion of alternative recreational options, and use of disciplinary and legal consequences, among other actions. This included development of the name 0-0-1-3 as both a slogan and a guideline for low risk alcohol use. Personnel from the age range at highest risk for binge drinking, 18-25, were involved in development and execution of these actions.
The third tier included partnering with the Wyoming Governor's Council on Impaired Driving[5] and the Advisory Council for the Enforcing Underage Drinking Laws Program,[6] as well as local law enforcement, the Chamber of Commerce, and others to promote responsibility and safety regarding alcohol beverage sales, service, and use.
Initial results[edit]
Metrics collected in 2005 showed a '74% decrease in alcohol-related incidents such as driving violations, public drunkenness, domestic violence, sexual assault, thefts, and other infractions. The base also reported 81% fewer cases of underage drinking and 45% fewer drunken-driving arrests.'[7] Multiple other military bases adopted elements of the program including a grant-funded trials at five bases.[8][2][9][10][11][12] The program served as the model for the Air Force's Culture of Responsible Choices (CoRC) program.
A 0-0-1-3 program was also implemented by the senior administration of the United States Naval Academy in response to a string of alcohol-related incidents that generated a large amount of negative publicity during the 2005-2006 school year. Its primary aim there is to 'promote responsible alcohol use' within the brigade of midshipmen.
Although most health professionals recommend limiting alcohol consumption to 2-4 drinks per day for men, the three drink cap has contributed the most to its massive unpopularity among the brigade, as it is designed to ensure that no midshipman is able to achieve a blood alcohol content (BAC) level above the Maryland legal driving limit of 0.08 (even when not driving or operating machinery).
Enforcement[edit]
While the senior leadership at the Naval Academy insists that 0-0-1-3 is only a guideline for responsible alcohol use, its enforcement involves mandatory, random breathalyzer tests for all midshipmen regardless of age or rank.[13][14][15] Those found in 'violation' of 0-0-1-3 (evidenced by having a BAC above 0.08) are placed on record as having alcohol abuse issues, and repeat offenders are subject to severe administrative infractions, up to and including expulsion. In contrast, neither the U.S. Military Academy (West Point) nor the U.S. Air Force Academy conducts random breathalyzers or punishes students simply for blowing above a particular BAC when not driving a motor vehicle.[14]
See also[edit]
References[edit]
- ^'College Drink Prevention Task Force report'(PDF). Retrieved December 10, 2013.
- ^ abGonzales, Tech. Sgt. Joseph (August 23, 2009). '0-0-1-3 Ensures Responsible Alcohol Use'. Vance Air Force Base. Archived from the original on December 16, 2013.
- ^'Alcohol and Drug Abuse Prevention and Treatment (ADAPT)'. USAF's David Grant USAF Medical Center. Archived from the original on December 16, 2013. Retrieved May 29, 2016.
- ^'Air Force Policy'(PDF). e-publishing.af.mil. Archived from the original(PDF) on March 16, 2013.
- ^Pelzer, Jeremy. 'Wyoming Governor's Council on Impaired Driving'. Wyoming Star Tribune. Retrieved May 29, 2016.
- ^'A Blueprint for Action'. the Advisory Council for the Enforcing Underage Drinking Laws Program. Archived from the original on March 9, 2014.
- ^O'Driscoll, Patrick (January 26, 2005). 'Air Force abuzz over moderation'. USA Today. Retrieved May 29, 2016.
- ^Master Sgt David P. Bourgeois. 'Wellness and Safety incorporates 0-0-1-3 principles'. Afmc.af.mil. Archived from the original on December 16, 2013. Retrieved December 10, 2013.
- ^BethAnn Cameron (December 15, 2011). 'Prevention strategy encourages responsible drinking'. Hawaii Army Weekly. Retrieved December 10, 2013.
- ^Mary Popejoy. '0-0-1-3 Formula Keeps Alcohol-Related Incidents At Bay'. Navy.mil. Retrieved December 10, 2013.
- ^'Fort Drum - The Mountaineer Online'. Drum.army.mil. December 15, 2011. Retrieved December 10, 2013.
- ^'Enforcing Underage Drinking Laws through Community/USAF Base Coalitions: Evaluation Findings'(PDF). ICF International. Archived from the original(PDF) on March 9, 2014.
- ^'Ensuring Responsible Use of Alcohol'. United States Naval Academy. October 2006. Archived from the original on March 10, 2012. Retrieved December 10, 2013.
- ^ ab'COMMANDANT OF MIDSHIPMEN INSTRUCTION 5350.1C'(PDF). US Naval Academy. Archived from the original(PDF) on December 15, 2013.
- ^Raymond McCaffrey (September 15, 2006). 'Alcohol Policy, Penalties Tightened'. The Washington Post. Retrieved December 10, 2013.
Further reading[edit]
3 Google
- Shelby Nordheim (November 2006). 'Responsible drinking: the definition and the reality'. Marquette Monthly. Archived from the original on September 28, 2007. Retrieved December 5, 2006.
- Andrew Scutro (September 15, 2006). 'Academy clamps down on drinking'. Navy Times.
- Philip Creed (December 12, 2006). 'New alcohol policy is working, academy officials say'. Navy Times.
- Raymond McCaffrey (September 16, 2006). 'Alcohol Policy, Penalties Tightened'. The Washington Post. pp. B10.
3 0google
External links[edit]
- Links about 0-0-1-3 on the United States Air Force CoRC resource website (archived versions)